Я попытался получить итоговую строку в нижней части таблицы, выполнив следующий код SQL.
SELECT
T1.[ItemCode],T4.[ItmsGrpNam],
CASE
WHEN T3.[OnHand] - SUM(T1.[OpenQty]) < SUM(T1.[OpenQty])
THEN T3.[OnHand] - SUM(T1.[OpenQty])
ELSE
SUM(T1.[OpenQty])
END As 'Missing Quantity'
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode
INNER JOIN OITW T3 ON T2.ItemCode = T3.ItemCode
INNER JOIN OITB T4 ON T2.ItmsGrpCod=T4.ItmsGrpCod
WHERE
T3.[WhsCode] = T1.[WhsCode]
and T0.[DocDueDate] <= '[%D1]'
and (T4.[ItmsGrpNam] = 'Commercial' Or T4.[ItmsGrpNam] = 'Residentiel')
GROUP BY T1.[ItemCode],T3.[OnHand],T4.[ItmsGrpNam]
HAVING T3.[OnHand] - SUM(T1.[OpenQty]) < 0 Or SUM(T1.[OpenQty]) < 0
UNION ALL
SELECT 'See', 'Total Missing Quantity' , CASE
WHEN T3.[OnHand] - SUM(T1.[OpenQty]) < SUM(T1.[OpenQty])
THEN T3.[OnHand] - SUM(T1.[OpenQty])
ELSE
SUM(T1.[OpenQty])
END
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode
INNER JOIN OITW T3 ON T2.ItemCode = T3.ItemCode
INNER JOIN OITB T4 ON T2.ItmsGrpCod=T4.ItmsGrpCod
WHERE
T3.[WhsCode] = T1.[WhsCode]
and T0.[DocDueDate] <= '[%D1]'
and (T4.[ItmsGrpNam] = 'Commercial' Or T4.[ItmsGrpNam] = 'Residentiel')
У меня есть это сообщение об ошибке '1).[Microsoft] [Собственный клиент SQL Server 11.0] [SQL Server] Столбец «OITW.OnHand» недопустим в списке выбора, поскольку он не содержится в статистической функции или в предложении BY GROUP.2).[Microsoft] [Собственный клиент SQL Server 11.0] [SQL Server] Не удается подготовить операторы.'Пользовательские значения' (CSHS) '
Когда я пытаюсь
GROUP BY T1.[ItemCode],T3.[OnHand],T4.[ItmsGrpNam]
HAVING T3.[OnHand] - SUM(T1.[OpenQty]) < 0 Or SUM(T1.[OpenQty]) < 0
Во второй части запроса я получаю несколько строк, когда мне нужна только одна, которая суммирует все.
Я потратил день, чтобы выяснить это, и в сети есть несколько ответов, но я не знаю, что я делаю неправильно.
Кто-нибудь может мне помочь с этой проблемой?Заранее спасибо.