Если вы собираетесь использовать статистическую функцию, вам обычно нужно указывать все неагрегированные столбцы (например, Location.Name
) в предложении GROUP BY
. В противном случае вы не сможете вернуть их в своем запросе.
Если вы хотите вернуть неагрегированные поля, а также включить агрегат, вам нужно использовать оконную функцию:
SUM([Quantity Requested]) OVER(PARTITION BY [Source Document ID])
Если ваша СУБД поддерживает это,это будет выглядеть следующим образом:
SELECT
[Source Document ID] AS Source
,Location.Name AS Address
,[Item No_] AS No
,[Document No_] AS Document
,Item.[No_ 2] AS No2
,MN.Name AS Brand
,SUM([Quantity Requested]) OVER(PARTITION BY [Source Document ID]) AS Qty,
CASE WHEN qty > 20 THEN 'No' ELSE 'Yes' END AS Priority
,[Created On] AS Date
FROM [MDR].[dbo].[nav_BG$AWHM_Document_Line] AS DocLine
JOIN [MDR].[dbo].[nav_BG$Item] AS Item ON DocLine.[Item No_] = Item.[No_]
JOIN [MDR].[dbo].[nav_BG$Location] AS Location ON DocLine.[Source Document ID] = Location.Code
JOIN [MDR].[dbo].[nav_BG$Manufacturer] AS MN ON Item.[Manufacturer Code] = MN.Code
WHERE [Location Code] = 'XXX'
AND [Document Type] = 'XXX'
AND [From Zone Code] = 'XXX'
AND (DATEPART(yy, [Created On]) = YEAR(@date)
AND DATEPART(mm, [Created On]) = MONTH(@date)
AND DATEPART(dd, [Created On]) = DAY(@date))
-- GROUP BY [Source Document ID]
ORDER BY [Created On]
Это позволит вам вернуть строки подробностей вместе с SUM()
, рассчитанным для каждой группы [Source Document ID]
.