mysql - LPAD/RPAD : Align column

标签 mysql sql concatenation

我想对齐我的专栏“Gesamt”:

SELECT k.KUNDENID AS ID, 
       vorname AS Vorname, 
       nachname AS Nachname, 
       CONCAT(IFNULL(ROUND(SUM(Betrag), 2), 0), LPAD('Euro', 4, ' ')) AS Gesamt  
FROM kunde k  
LEFT JOIN verkauf v ON k.KUNDENID = v.KUNDENID  
GROUP BY k.KUNDENID;

输出:

+----+---------+-----------+-------------+
| ID | Vorname | Nachname  | Gesamt      |
+----+---------+-----------+-------------+
|  1 | Homer   | Simpson   | 20.95Euro   |
|  2 | Doug    | Heffernan | 120.50Euro  |
|  3 | Dexter  | Morgan    | 350.30Euro  |
|  4 | Sheldon | Cooper    | 1500.00Euro |
|  5 | Maurice | Moss      | 0.00Euro    |
+----+---------+-----------+-------------+

所以我想要的输出看起来像:

+----+---------+-----------+--------------+
| ID | Vorname | Nachname  | Gesamt       |
+----+---------+-----------+--------------+
|  1 | Homer   | Simpson   |   20.95 Euro |
|  2 | Doug    | Heffernan |  120.50 Euro |
|  3 | Dexter  | Morgan    |  350.30 Euro |
|  4 | Sheldon | Cooper    | 1500.00 Euro |
|  5 | Maurice | Moss      |    0.00 Euro |
+----+---------+-----------+--------------+

如何正确对齐?

感谢您的帮助!

最佳答案

通过连接 '<space>Euro' 来简化连接而不是 LPAD('Euro',4,' ')并在整个 concat 中添加一个 LPAD 使其右移(您可以根据您的数据决定需要多少个字符才能对齐):

SELECT k.KUNDENID AS ID, 
       vorname AS Vorname, 
       nachname AS Nachname, 
       LPAD(
         CONCAT(IFNULL(ROUND(SUM(Betrag), 2), 0), ' Euro')
       , 13, ' ') AS Gesamt  
FROM kunde k  
LEFT JOIN verkauf v ON k.KUNDENID = v.KUNDENID  
GROUP BY k.KUNDENID;

关于mysql - LPAD/RPAD : Align column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24694305/

相关文章:

mysql - 如何限制 LEFT JOIN?

mysql - 如何在 SQL 中比较除一列之外所有列中都有重复项的多行,并显示不同的列

mysql - 为什么这些查询会返回不同的结果?

php - 选择最后 5 条记录并在 PDO 中升序排序

php - sql查询中的文本匹配(LIKE)

java - 异常 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException

python - 在二维数组内追加/连接数组

sql - MySQL:删除 Left Join 上的重复列,3 个表

Python Pandas Concat "WHERE"满足条件

带有 CONCAT 和 DATE_FORMAT 的 MySQL IF