计算Union All查询的当月至今,6个月和当年迄今

时间:2018-11-19 01:19:22

标签: sql-server-2008-r2 sum union-all monthcalendar

我正在尝试为使用Union All为两个不同的表(一个用于接收,另一个用于销售)创建的查询计算日期,月份和日期。它们都有相同的供应商名称。我已将查询创建为波纹管,但由于每次都会出错,因此可以计算出当月的日期,过去六个月或当年的日期。有什么想法吗?我使用了以下代码

SELECT VEND_NO,
        ACTV_DAT,
       SUM(RECVR_SUB_TOT)AS RECV_TOT,
       SUM(CALC_EXT_PRC) AS SAL_TOT

FROM ((SELECT P.VEND_NO, P.RECVR_DAT as ACTV_DAT, P.RECVR_SUB_TOT, 0 as CALC_EXT_PRC 
       FROM PO_RECVR_HIST P
      ) UNION ALL
      (SELECT S.ITEM_VEND_NO, S.BUS_DAT, 0, CALC_EXT_PRC
       FROM PS_TKT_HIST_LIN S
      )
     ) PS

GROUP BY VEND_NO,
ACTV_DAT,
CALC_EXT_PRC   
ORDER BY VEND_NO,
ACTV_DAT;  

1 个答案:

答案 0 :(得分:1)

从您的CALC_EXT_PRC子句中删除group by

SELECT
    VEND_NO
  , ACTV_DAT
  , SUM( RECVR_SUB_TOT ) AS RECV_TOT
  , SUM( CALC_EXT_PRC )  AS SAL_TOT

FROM (
    SELECT
        P.VEND_NO
      , P.RECVR_DAT     AS ACTV_DAT
      , P.RECVR_SUB_TOT
      , 0               AS CALC_EXT_PRC
    FROM PO_RECVR_HIST P

    UNION ALL
    SELECT
        S.ITEM_VEND_NO
      , S.BUS_DAT
      , 0
      , CALC_EXT_PRC
    FROM PS_TKT_HIST_LIN S

) PS
GROUP BY
    VEND_NO
  , ACTV_DAT
ORDER BY
    VEND_NO
  , ACTV_DAT;

此外,并集的每个部分都不需要括号。