我正在使用IBM DB2 DBMS,我想显示每个客户支付的总金额。目前,当我选择全部时,它会显示每个客户的多个付款金额,这会导致重复客户。
我想显示每个客户支付的总金额,而不是我表格中的任意数字。
这就是我到目前为止所拥有的。我的子查询出错了。
SELECT T1.CLIENT_ID
(SELECT SUM(T2.PAY_AMT) FROM AR_SUM T2 WHERE T1.CLIENT_ID = T2.CLIENT_ID) AS TOTAL
FROM AR_SUM T1
GROUP BY CLIENT_ID
FETCH FIRST 100 ROWS ONLY
我希望它显示:
Client_ID TOTAL
abc 100
def 200
ghi 150
正如我之前提到的,我想将其与我桌子中没有的任意目标数量进行比较。另外,有没有办法将其转换为百分比?
我想要的最终产品:
Client_ID TOTAL percent of total <-- (lets say out of 100)
abc 10 .10 or 10% <-- if possible
def 20 .2
ghi 15 .15
答案 0 :(得分:0)
如上所述,您的查询缺少逗号:
SELECT T1.CLIENT_ID,
-------------------^
(SELECT SUM(T2.PAY_AMT)
FROM AR_SUM T2
WHERE T1.CLIENT_ID = T2.CLIENT_ID) AS TOTAL
FROM AR_SUM T1
GROUP BY CLIENT_ID
FETCH FIRST 100 ROWS ONLY;
但使用聚合函数更简单:
SELECT T.CLIENT_ID, SUM(T.PAY_AMT) AS TOTAL
FROM AR_SUM T
GROUP BY t.CLIENT_ID
FETCH FIRST 100 ROWS ONLY;