У меня есть следующий запрос:SQL Server 2008R2 Union All Group By
SELECT SUM (T0.[TotalSumSy]) AS 'Line Sterling',
T0.[WhsCode] AS 'Business Unit'
FROM [dbo].[INV1] T0
INNER JOIN [dbo].[OINV] T1
ON T1.[DocEntry] = T0.[DocEntry]
WHERE T1.[DocDate] > (CONVERT(DATETIME, '20121001', 112))
GROUP BY T0.[WhsCode]
UNION ALL
SELECT SUM (T0.[TotalSumSy] * -1) AS 'Line Sterling',
T0.[WhsCode] AS 'Business Unit'
FROM [dbo].[RIN1] T0
INNER JOIN [dbo].[ORIN] T1
ON T1.[DocEntry] = T0.[DocEntry]
WHERE T1.[DocDate] > (CONVERT(DATETIME, '20121001', 112))
GROUP BY T0.[WhsCode]
Однако это возвращение 2 набора групп. Я понимаю, почему, но я не могу понять, как решить. Может ли кто-нибудь помочь?
Спасибо. Я нахожу, что ваш запрос легче понять. Однако у меня есть следующая ошибка. Msg 8120, уровень 16, состояние 1, строка 7 Столбец «dbo.RIN1.WhsCode» недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. – user2694771
@ пользователь2694771. , , Я оставил 'sum()' во втором подзапросе, который превратил его в агрегацию. Это исправлено. –