【问题标题】:Calculate Month to date , 6 month and Year to date for Union All Query计算 Union All Query 的月初至今、6 个月和年初至今
【发布时间】:2018-11-19 01:19:21
【问题描述】:

我正在尝试计算使用 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;  

【问题讨论】:

  • 你遇到了什么错误?
  • 将字符串转换为smalldatetime数据类型时转换失败。

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


【解决方案1】:

从您的 group by 子句中删除 CALC_EXT_PRC

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;

此外,联合的每个部分都不需要括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-07
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多