我正在运行以下查询:
SELECT DISTINCT
CAST(ar_all_bills.a_unpaid_balance as decimal(5,2)) as "Total Unpaid Balance"
FROM ar_all_bills WHERE a_ar_customer_cid = 100059
结果是以下2条记录:
49.74
62.41
但是,当我在查询中添加GROUP BY
以获取未付余额的SUM
时:
SELECT DISTINCT
SUM(CAST(ar_all_bills.a_unpaid_balance as decimal(5,2))) as "Total Unpaid Balance"
FROM ar_all_bills WHERE a_ar_customer_cid = 100059 GROUP BY a_ar_customer_cid
结果是:
461.27
有关于此的任何想法吗?
答案 0 :(得分:7)
第一个查询中的DISTINCT
过滤掉第二个查询中SUM
中包含的项目。删除DISTINCT
,您将看到第一个的总和将等于第二个的总和。
如果您希望SUM
与原始内容匹配,请尝试以下操作:
SELECT SUM(DISTINCT CAST(ar_all_bills.a_unpaid_balance as decimal(5,2))) as "Total Unpaid Balance" FROM ar_all_bills WHERE a_ar_customer_cid = 100059 GROUP BY a_ar_customer_cid
DISTINCT
需要位于SUM
内,而不是在DISTINCT
之外。否则,您将收到SUM
SUM
,而不是DISTINCT
个SUM
项。
如果您希望DISTINCT
包含所有项目(而不仅仅是DISTINCT
项目),那么只需完全删除SELECT SUM(CAST(ar_all_bills.a_unpaid_balance as decimal(5,2))) as "Total Unpaid Balance" FROM ar_all_bills WHERE a_ar_customer_cid = 100059 GROUP BY a_ar_customer_cid
(与您在特定项目中的第二个查询完全不同)情况,但在所有情况下意义不同):
{{1}}
答案 1 :(得分:1)
尝试在没有DISTINCT
的情况下运行第一个查询,然后发布结果。这应该会告诉你什么是错的。