Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql中汇总列_Sql_Sql Server 2008_Union - Fatal编程技术网

在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,我没有得到我期望的结果