Поле даты не содержится ни в статистической функции, ни в предложении GROUP BY - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь рассчитать «Месяц к дате», используя три соединенные таблицы.Это всегда дает мне ошибку «не содержится ни в статистической функции, ни в предложении 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

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Я полагаю, что вы хотите:

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

Примечание: вам все равно понадобится month(s.bus_dat) в предложении group by.

Если вы хотите получить сумму только за текущий месяц,тогда вам не нужна оконная функция, просто условное агрегирование:

sum(case when year(s.bus_dat) = year(getdate()) and month(s.bus_dat) = month(getdate())
         then qty_sold
    end) as mtd
0 голосов
/ 28 октября 2018

попробуйте также включить 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...