2

我正在运行以下查询:

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

但是,当我将 a 添加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

对此有什么想法吗?

4

2 回答 2

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,而不是SUMofDISTINCT项目。

如果您希望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
于 2012-12-19T20:11:26.283 回答
1

尝试运行第一个查询而不DISTINCT发布结果。那应该告诉你出了什么问题。

于 2012-12-19T20:11:00.780 回答