C# ASP/SQL:将数据分组到列中

C# ASP/SQL:将数据分组到列中,c#,sql,asp.net,sql-server,C#,Sql,Asp.net,Sql Server,我对不同月份的客户和公司进行了分组,这样总体上我只有一个客户/公司 我想做的是将所有月份中的所有客户(分组)和列Money放入一个新表中,其中月份(Money)是列。如何在SQL中实现这一点?所以,客户xy可能在1月份有钱1,但在2月份有可能得到空值,以此类推 在我看来,这是一个简单的连接,如下所示: DECLARE @Customer TABLE (ID int, Name varchar(100)) DECLARE @January TABLE (CustomerId int, Money

我对不同月份的客户和公司进行了分组,这样总体上我只有一个客户/公司

我想做的是将所有月份中的所有客户(分组)和列
Money
放入一个新表中,其中月份(Money)是列。如何在SQL中实现这一点?所以,客户xy可能在1月份有钱1,但在2月份有可能得到空值,以此类推


在我看来,这是一个简单的连接,如下所示:

DECLARE @Customer TABLE (ID int, Name varchar(100))
DECLARE @January TABLE (CustomerId int, Money decimal)
DECLARE @February TABLE (CustomerId int, Money decimal)
DECLARE @March TABLE (CustomerId int, Money decimal)

INSERT INTO @Customer (id, name) VALUES (1, 'C1')
INSERT INTO @Customer (id, name) VALUES (2, 'C2')
INSERT INTO @Customer (id, name) VALUES (3, 'C3')

INSERT INTO @January (CustomerId, Money) VALUES (1, 500)
INSERT INTO @January (CustomerId, Money) VALUES (2, 300)

INSERT INTO @February (CustomerId, Money) VALUES (2, 100)
INSERT INTO @February (CustomerId, Money) VALUES (3, 200)

INSERT INTO @march (CustomerId, Money) VALUES (1, 700)
INSERT INTO @march (CustomerId, Money) VALUES (2, 600)

SELECT DISTINCT c.*, j.Money as Money_January, f.Money as Money_February, m.Money as Money_March 
FROM @Customer c
LEFT JOIN @January j ON c.Id = j.CustomerId
LEFT JOIN @February f ON c.Id = f.CustomerId
LEFT JOIN @March m ON c.Id = m.CustomerId

使用该示例,但不幸的是,当数据约为100000行或更多行时,执行需要几分钟……在CustomerId for Months表上添加索引。我假设Id是Customer表中的主键,但不幸的是,它与Customer\u Id 1,2,2,4类似。因此,您可以在月份表中多次显示Customer和Cusotmer_id。但是分组是可以的,然后它将是一个完美的识别器。也许一个很好的方法就是创建一个只有女友、客户、钱的视图,并将它们分组,然后加入到客户表中?我已经创建了客户id上带有标识符的custoemr组,然后加入每月的表,但这也需要几分钟。。。