Tôi cần so sánh số dư cuối cùng của hai bảng từ các máy khách khác nhau được nhóm theo ID. Các bảng có cùng ID nhưng một bảng có nhiều mục nhập ID và cái kia thì không. Tôi cần phải tổng hợp hàng từ bảng với nhiều mục vì vậy tôi chỉ có một số cuối cùng để thực hiện các phép tính.Cách nhóm theo hai trường dữ liệu trong biểu thức bảng chung
Tôi có truy vấn thực hiện điều này nhiều, nhưng bây giờ tôi cũng cần thực hiện theo từng nhóm một tháng. Truy vấn hiện tại của tôi tổng cộng nó cho tất cả các ngày. Dữ liệu thực sự cần được sắp xếp theo ID và theo tháng để chúng biết số dư hàng tháng kết thúc cho mỗi ID. Có cách nào để làm điều này với những gì tôi có cho đến nay?
Xin cảm ơn trước.
Đây là những gì tôi có cho đến nay.
-- 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]
Tôi đã thử cách này và tôi nhận được câu trả lời sai.
WITH [cteTable1Sum] AS
(SELECT [ID], SUM([cost])
AS [cost] FROM [Table1]
GROUP BY [ID], [TheDate])
Cảm ơn bạn JNK, đã hoạt động. – user973671