SQL查询分组使用Union All

时间:2015-11-19 06:04:42

标签: sql sql-server tsql group-by union-all

我完全是SQL查询的新手,需要帮助将一些select语句组合在一起形成一个查询。

我将一次启动一个查询:

select sum(DOCI) 
from    (
        select  POL.SP_NUM, sum(Q.AMT + POL.AMT) DOCI 
        from    S_ASSET POL
        ,       S_QUOTE_ITEM Q 
        where   POL.X_QUOTE_ID  =   Q.ROW_ID 
        and     POL.SP_NUM      in  ('000','111','222')
        group by POL.SP_NUM

        UNION ALL

        select  POL.SP_NUM, sum(QXM.AMT) DOCI 
        from    S_ASSET POL
        ,       S_QUOTE_ITEM Q
        ,       S_QUOTE_ITEM_XM QXM 
        where   POL.X_QUOTE_ID  =   Q.ROW_ID 
        and     Q.ROW_ID        =   QXM.PAR_ROW_ID 
        and     POL.SP_NUM      in  ('000','111','222')
        group by POL.SP_NUM
    )

表:

S_ASSET
X_QUOTE_ID  POL     AMT
A           000     1
B           111     1
C           222     1

S_QUOTE_ITEM
ROW_ID      AMT
A           10
B           10
C           1

S_QUOTE_ITEM_XM
PAR_ROW_ID  AMT
A           10
B           0

Expected O/P:
POL     AMT(sum)
A       21
B       11
C       2

请帮忙

1 个答案:

答案 0 :(得分:0)

SELECT sp_num, SUM(doci)
  FROM ( ...subquery... )
  GROUP BY sp_num;

表名pol仅存在于子查询中。外部查询是从子查询的结果中选择的,不是来自任何命名表。