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

ただし、未払いの残高GROUP BYを取得するためにクエリにa を追加すると、次のようになります。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では、2 番目のクエリに含まれているアイテムを除外していSUMます。それを削除するDISTINCTと、最初の合計が 2 番目の合計と等しくなることがわかります。

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ではなくを取得しています。SUMDISTINCT

SUMをすべてのアイテム(アイテムだけでなく)にしたい場合はDISTINCT、完全に削除してDISTINCTください(特定の状況での2番目のクエリと同じですが、すべての状況で意味が異なります):

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 に答える