如何在单个查询中执行此操作

时间:2015-03-03 21:27:49

标签: sql sql-server-2008

在SQL Server 2008中,我有类似的内容:

Accounts

aaa | 01/01/2010 | 15.00    
bbb | 01/01/2010 | 20.00  
ccc | 01/01/2010 | 10.00    
ddd | 02/01/2010 | 30.00   
eee | 04/01/2010 | 25.00  
fff | 05/01/2010 | 1.00

Transactions

aaa | 01/01/2010 | 15.00      
aaa | 02/01/2010 | 20.00     
aaa | 03/01/2010 | 5.00    
bbb | 01/01/2010 | 15.00   
bbb | 04/01/2010 | 5.00  
ccc | 04/01/2010 | 10.00      
ddd | 05/01/2010 | 25.00    

我需要结果如下:

      Jan-10    Feb-10  Mar-10  Apr-10  May-10  Accts tot   Trans Tot
Jan-10  15      20      5       5       0       45          45
Feb-10  15      0       0       15      0       30          30
Mar-10  0       0       0       0       0       0           0
Apr-10  0       0       0       0       0       25          25
May-10  0       0       0       0       0       0           0

我希望这是有道理的...每个单元格是特定月份创建的帐户的交易总和。因此,1月创建的帐户每年将有一个交易总额。第一列是帐户日期,行是交易日期,单元格是在该月创建的帐户在相应月份中具有交易的任何时间。

现在我在表上进行连接,然后循环并计算每个单元格。

循环正在消耗我的处理时间。

1 个答案:

答案 0 :(得分:1)

我不认为您会找到一个返回该查询的查询。很多年前我是sqlServer的专家,但我忘记了很多关于transact-sql的事情,我遇到这些问题时所做的就是根据查询创建一个包含所需列的临时表并开始插入信息,使用游标循环信息。最后只需## 34;从#temp"中选择*。希望这个想法有所帮助......