Промежуточный итог sql SAP B1 - не найден правильный способ ее решения - PullRequest
0 голосов
/ 28 мая 2018

Я попытался получить итоговую строку в нижней части таблицы, выполнив следующий код 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

Во второй части запроса я получаю несколько строк, когда мне нужна только одна, которая суммирует все.

Я потратил день, чтобы выяснить это, и в сети есть несколько ответов, но я не знаю, что я делаю неправильно.

Кто-нибудь может мне помочь с этой проблемой?Заранее спасибо.

...