我有如下表:在SQL Server中使用GROUP BY子句返回兩行08
acc_name dr_amt cr_amt
Cash in hand 10000 0
Share Capital 00 1000
Cash in hand 2000 0
Share Capital 0 2000.00
Vehicles 5000 0
Cash in hand 0 5000
用下面的查詢,
SELECT a.acc_name, sum(j.dr_amt) AS dr_sum, sum(j.cr_amt) AS cr_sum
FROM journal_voucher_details_mcg AS j
INNER JOIN acc_head_mcg AS a ON a.acc_code = j.acc_code
INNER JOIN journal_voucher_mcg AS jv ON jv.jv_no = j.jv_no
WHERE jv.jv_date = '2011-04-08'
GROUP BY a.acc_name
我能夠得到如下結果:
acc_name dr_sum cr_sum
Cash in hand 3000 5000
Share Capital 0 3000
Vehicles 5000 0
但我希望手中有兩筆現金(對於既有dr_sum又有cr_sum大於0的任何入口),並且結果是d是如下:
acc_name dr_sum cr_sum
Cash in hand 3000 0
Cash in hand 0 5000
Share Capital 0 3000
Vehicles 5000 0
我還需要兩dr_sum和cr_sum的總和,在這種情況下,應該是8000到兩個....我的最終查詢是
SELECT *, SUM(dr_sum), SUM(cr_sum)
FROM (SELECT a.acc_name, sum(j.dr_amt) AS dr_sum, sum(j.cr_amt) AS cr_sum
FROM journal_voucher_details_mcg AS j
INNER JOIN acc_head_mcg AS a ON a.acc_code = j.acc_code
INNER JOIN journal_voucher_mcg AS jv ON jv.jv_no = j.jv_no
WHERE jv.jv_date = '2011-04-08'
GROUP BY j.acc_code)
但是這一次不是工作....將真正感謝你的努力傢伙!
編輯
最終結果集:
acc_name dr_sum cr_sum
Cash in hand 3000 0
Cash in hand 0 5000
Share Capital 0 3000
Vehicles 5000 0
Total 8000 8000
我無法顯示「總」在過去的元組的第一場(字總計)。
我需要分別dr_sum柱cr_column所有金額的總和......所以你的第一個假設是正確的。我希望總和顯示爲最終的元組,像'... UNION SELECT SUM(dr_sum),SUM(cr_sum)FROM W_RESULT'。但是我不能讓「Total」這個詞在最後一個元組中顯示爲一個字段。請參閱上面的編輯以獲得進一步的說明。 – mannyee 2011-04-10 05:34:51
加入這個聯盟應該做的伎倆。 'UNION SELECT'Total'AS acc_name,SUM(dr_sum),SUM(cr_sum)FROM W_RESULT' – 2011-04-10 11:47:33
用完整的解決方案更新了答案。 (使用'UNION ALL'添加最後一個'Total'將把它作爲最後一行) – 2011-04-11 14:50:25