来自两个表的查询具有两个不同的日期字段

时间:2018-11-12 01:51:28

标签: sql sql-server date sql-server-2008 sales

我有两个表,一个用于接收“ PO_RECVR_HIST”,另一个用于销售“ PS_TKT_HIST_LIN”。我想创建一个查询,显示收货总额和销售总额。这两个日期无关,结果有误。这两个表具有相同的供应商。我正在使用以下查询

SELECT P.VEND_NO,
       sum(P.RECVR_TOT)AS RECV_TOT,
       sum(S.CALC_EXT_PRC) AS SAL_TOT    
FROM PO_RECVR_HIST P INNER JOIN
     PS_TKT_HIST_LIN S
     ON P.VEND_NO = S.ITEM_VEND_NO
WHERE P.RECVR_DAT > getdate()-7   
GROUP BY P.VEND_NO, S.BUS_DAT    
HAVING S.BUS_DAT > getdate()-7    
ORDER BY P.VEND_NO  

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我想我明白了。您想要不同列中的总和。一种方法是执行UNION ALL来收集数据,然后进行汇总:

SELECT VEND_NO,
       SUM(RECVR_TOT)AS RECV_TOT,
       SUM(CALC_EXT_PRC) AS SAL_TOT    
FROM ((SELECT P.VEND_NO, P.RECVR_DAT as dte, P.RECVR_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
WHERE DTE > GETDATE() - 7   
GROUP BY P.VEND_NO   
ORDER BY P.VEND_NO;

JOIN并不是一个好方法,因为它会引发聚合。