首页 > 解决方案 > 日期字段不包含在聚合函数或 GROUP BY 子句中

问题描述

我正在尝试使用三个连接表来计算“本月至今”。它总是给我错误“不包含在聚合函数或 GROUP BY 子句中”日期字段是S.BUS_DAT 我尝试了很多事情,但总是得到同样的错误。任何建议这是我使用的代码

SELECT
-- Select from IM_IN
M.ITEM_NO,
M.DESCR,
N.QTY_ON_HND,
M.PRC_1,
N.LST_COST,
N.LST_RECV_DAT,

--Select from IM_ITEM
M.CATEG_COD,
M.ATTR_COD_1,
M.ITEM_VEND_NO,
M.ALT_1_UNIT,
M.ALT_1_NUMER,
M.LST_COST,
count (S.BUS_DAT) AS BUS_DAYS,

**sum (QTY_SOLD) OVER (PARTITION BY Month (S.BUS_DAT))as **MTD****


FROM
dbo.IM_INV N
INNER JOIN dbo.IM_ITEM M
ON
N.ITEM_NO = M.ITEM_NO

INNER JOIN 
dbo.PS_TKT_HIST_LIN S
ON
N.ITEM_NO  = S.ITEM_NO


Group by
M.ITEM_NO,
M.DESCR,
M.ITEM_VEND_NO,
M.CATEG_COD,
M.ATTR_COD_1,
N.QTY_ON_HND,
N.LST_COST,
N.LST_RECV_DAT,
N.LST_SAL_DAT,
M.ALT_1_UNIT,
M.ALT_1_NUMER,
M.PRC_1,
M.LST_COST





Order by M.ITEM_NO

标签: sqlsql-serverdategroup-byaggregate

解决方案


尝试Month(S.BUS_DAT)包括group by

SELECT
M.ITEM_NO, 
M.DESCR, 
N.QTY_ON_HND, 
M.PRC_1, 
N.LST_COST, 
N.LST_RECV_DAT, 
M.CATEG_COD, 
M.ATTR_COD_1, 
M.ITEM_VEND_NO, 
M.ALT_1_UNIT, 
M.ALT_1_NUMER, 
M.LST_COST, 
COUNT(S.BUS_DAT) AS BUS_DAYS, 
SUM(QTY_SOLD) OVER(PARTITION BY MONTH(S.BUS_DAT)) AS MTD
FROM dbo.IM_INV N
     INNER JOIN dbo.IM_ITEM M ON N.ITEM_NO = M.ITEM_NO
     INNER JOIN dbo.PS_TKT_HIST_LIN S ON N.ITEM_NO = S.ITEM_NO
GROUP BY M.ITEM_NO, 
         M.DESCR, 
         M.ITEM_VEND_NO, 
         M.CATEG_COD, 
         M.ATTR_COD_1, 
         N.QTY_ON_HND, 
         N.LST_COST, 
         N.LST_RECV_DAT, 
         N.LST_SAL_DAT, 
         M.ALT_1_UNIT, 
         M.ALT_1_NUMER, 
         M.PRC_1, 
         M.LST_COST, 
         MONTH(S.BUS_DAT)
ORDER BY M.ITEM_NO;

推荐阅读