我正在尝试为使用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;
答案 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;
此外,并集的每个部分都不需要括号。