Ho bisogno di confrontare i saldi finali di due tabelle di diversi client raggruppati per ID. Le tabelle hanno lo stesso ID ma una ha più voci ID e l'altra no. Ho bisogno di sommare la riga dalla tabella con più voci in modo da avere solo un numero finale con cui fare i calcoli.Come raggruppare per due campi di dati in un'espressione di tabella comune
Ho la query che fa questo molto, ma ora ho bisogno di farlo raggruppare per mese pure. La mia query corrente lo ammonta a tutte le date. I dati devono essere ordinati per ID e per mese in modo che conoscano il saldo mensile finale per ogni ID. C'è un modo per farlo con quello che ho finora?
Grazie in anticipo.
Questo è quello che ho finora.
-- 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]
Ho provato questo e ottengo la risposta sbagliata.
WITH [cteTable1Sum] AS
(SELECT [ID], SUM([cost])
AS [cost] FROM [Table1]
GROUP BY [ID], [TheDate])
Grazie, JNK, ha funzionato. – user973671