Мне нужно сравнить итоговые остатки двух таблиц от разных клиентов, сгруппированных по ID.Таблицы имеют одинаковые идентификаторы, но одна имеет несколько записей идентификаторов, а другая - нет.Мне нужно сложить строку из таблицы с несколькими записями, поэтому у меня есть только одно окончательное число для расчетов.
У меня есть запрос, который делает это много, но теперь мне нужно получить его для группировки по месяцам, так какЧто ж.Мой текущий запрос суммирует его на все даты.Данные должны быть отсортированы по идентификатору и месяцу, чтобы они знали конечный ежемесячный баланс для каждого идентификатораЕсть ли способ сделать это с тем, что у меня до сих пор?
Заранее спасибо.
Это то, что у меня есть до сих пор.
-- Data setup
CREATE TABLE [Table1]
(
[ID] INT,
[cost] INT,
[traceNumber] INT,
[TheDate] DATE
)
INSERT [Table1]
VALUES (1, 200, 1001, '9/07/2011'),
(1, -20, 1002, '9/08/2011'),
(1, 130, 1003, '10/10/2011'),
(2, 300, 1005, '10/10/2011')
CREATE TABLE [Table2]
(
[ID] INT,
[cost] INT
)
INSERT [Table2]
VALUES (1, 200),
(2, 300)
-- Query
;WITH [cteTable1Sum] AS
(
SELECT [ID], SUM([cost]) AS [cost]
FROM [Table1]
GROUP BY [ID]
)
SELECT [Table1].[ID],
[Table1].[TheDate],
[Table1].[traceNumber],
[Table1].[cost] AS [Frost_Balance],
cte.[cost] AS [SUM_Frost_Balance],
[Table2].[cost] AS [Ternean_Balance],
cte.[cost] - [Table2].[cost] AS [Ending_Balance]
FROM [Table1]
INNER JOIN [Table2]
ON [Table1].[ID] = [Table2].[ID]
INNER JOIN [cteTable1Sum] cte
ON [Table1].[ID] = cte.[ID]
Я пробовал этои я получаю неправильный ответ.
WITH [cteTable1Sum] AS
( SELECT [ID], SUM([cost])
AS [cost] FROM [Table1]
GROUP BY [ID], [TheDate] )