在sql中汇总列
我有一个要求,我想要以下结果集:在sql中汇总列,sql,sql-server-2008,union,Sql,Sql Server 2008,Union,我有一个要求,我想要以下结果集: Type Receipts Issues Balance ================================== Purchase 10 0 10 Purchase 5 0 15 Sales 0 2 13 Purchase 10 0 23 Sales 0 5 18 其中,最后一列应为汇
Type Receipts Issues Balance
==================================
Purchase 10 0 10
Purchase 5 0 15
Sales 0 2 13
Purchase 10 0 23
Sales 0 5 18
其中,最后一列应为汇总余额=(收据和问题)+余额
我的问题是:
SELECT type,
Isnull(receipts, 0) AS Receipts,
Isnull(issues, 0) AS Issues,
( Isnull(receipts, 0) - Isnull(issues, 0) ) AS Balance
FROM (SELECT 'Purchasse' AS Type,
PBD.qty AS Receipts,
NULL AS Issues
FROM tbl_purchasebillmain PB
JOIN tbl_purchasebilldetail PBD
ON PBD.purchasebill_id = PB.record_id
JOIN tbl_product_master PM
ON PM.record_id = PBD.product_id
UNION
SELECT 'Purchasse Return' AS Type,
NULL AS Receipts,
PRD.qty AS Issues
FROM dbo.tbl_purchasereturnmain PR
JOIN dbo.tbl_purchasereturndetail PRD
ON PRD.purchasereturnbill_id = PR.record_id
JOIN tbl_purchasebilldetail PBD
ON PBD.record_id = PRD.purchasebilldetail_id
JOIN tbl_product_master PM
ON PM.record_id = PBD.product_id) AS s
我不确定你所说的(收据问题)+余额是什么意思,但我假设你想要这个:
SELECT type,
sum(Isnull(receipts, 0)) AS Receipts,
sum(Isnull(issues, 0)) AS Issues,
sum(( Isnull(receipts, 0) - Isnull(issues, 0) )) AS Balance
FROM (SELECT 'Purchasse' AS Type,
PBD.qty AS Receipts,
NULL AS Issues
FROM tbl_purchasebillmain PB
JOIN tbl_purchasebilldetail PBD
ON PBD.purchasebill_id = PB.record_id
JOIN tbl_product_master PM
ON PM.record_id = PBD.product_id
UNION
SELECT 'Purchasse Return' AS Type,
NULL AS Receipts,
PRD.qty AS Issues
FROM dbo.tbl_purchasereturnmain PR
JOIN dbo.tbl_purchasereturndetail PRD
ON PRD.purchasereturnbill_id = PR.record_id
JOIN tbl_purchasebilldetail PBD
ON PBD.record_id = PRD.purchasebilldetail_id
JOIN tbl_product_master PM
ON PM.record_id = PBD.product_id) AS s
group by type
您是得到了错误还是根本没有得到想要的结果?在这个表上有一个自动递增的id会很有趣,这样,您就可以从子查询中获取当前id-1的余额。不知道是不是你想要别的,别担心:)@Jakob,我没有得到我期望的结果