• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

T-SQL,动态聚合查询_sqlserver

sqlserver 搞代码 7年前 (2018-06-16) 103次浏览 已收录 0个评论

IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES      WHERE TABLE_NAME = ‘AccountMessage’)   DROP TABLE AccountMessageGO

CREATE TABLE AccountMessage(FFundCode VARCHAR(6) NOT NULL,FAccName VARCHAR(20) NOT NULL,FAccNum INT NOT NULL);

IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES      WHERE TABLE_NAME = ‘AccountBalance’)   DROP TABLE AccountBalanceGO

http://www.gaodaima.com/34502.htmlT-SQL,动态聚合查询_sqlserver

CREATE TABLE AccountBalance(FFundCode VARCHAR(6) NOT NULL,FAccNum INT NOT NULL,FDate DATETIME DEFAULT (getdate()) NOT NULL,FBal NUMERIC(10,2) NOT NULL);

INSERT INTO AccountMessage VALUES(‘000001′,’北京存款’,1)INSERT INTO AccountMessage VALUES(‘000001′,’上海存款’,2)INSERT INTO AccountMessage VALUES(‘000001′,’深圳存款’,3)INSERT INTO AccountMessage VALUES(‘000002′,’北京存款’,1)INSERT INTO AccountMessage VALUES(‘000002′,’上海存款’,2)INSERT INTO AccountMessage VALUES(‘000002′,’天津存款’,3)INSERT INTO AccountMessage VALUES(‘000003′,’上海存款’,1)INSERT INTO AccountMessage VALUES(‘000003′,’福州存款’,2)

INSERT INTO AccountBalance(FDate, FFundCode, FAccNum, FBal) VALUES (‘2004-07-28′,’000001’,1,1000.00)INSERT INTO AccountBalance(FDate, FFundCode, FAccNum, FBal) VALUES (‘2004-07-28′,’000001’,2,1000.00)INSERT INTO AccountBalance(FDate, FFundCode, FAccNum, FBal) VALUES (‘2004-07-28′,’000001’,3,1120.00)INSERT INTO AccountBalance(FDate, FFundCode, FAccNum, FBal) VALUES (‘2004-07-28′,’000002’,1,2000.00)INSERT INTO AccountBalance(FDate, FFundCode, FAccNum, FBal) VALUES (‘2004-07-28′,’000002’,2,1000.00)INSERT INTO AccountBalance(FDate, FFundCode, FAccNum, FBal) VALUES (‘2004-07-28′,’000002’,3,1000.00)INSERT INTO AccountBalance(FDate, FFundCode, FAccNum, FBal) VALUES (‘2004-07-28′,’000003’,1,2000.00)INSERT INTO AccountBalance(FDate, FFundCode, FAccNum, FBal) VALUES (‘2004-07-28′,’000003’,2,1000.00)go

两种不同的方法

declare @s nvarchar(4000)set @s=”select @s=@s+’,’+quotename(FAccName) +’=isnull(sum(case a.FAccName when ‘+quotename(FAccName,””) +’ then b.FBal end),0)’from AccountMessage group by FAccNameexec(‘select 基金代码=a.FFundCode’+@s+’from AccountMessage a,AccountBalance bwhere a.FFundCode=b.FFundCode and a.FAccNum=b.FAccNumgroup by a.FFundCode’)go

select * into #t from(select a.*,b.fbal from AccountMessage a join AccountBalance b on a.ffundcode=b.ffundcode and a.faccnum=b.faccnum)tDECLARE @SQL VARCHAR(8000) SET @SQL=’SELECT ffundcode’ SELECT @SQL= @SQL+ ‘,sum(CASE WHEN FAccName = ”’ + tt + ”’ THEN FBal else 0 END) [‘ +tt+ ‘]’ FROM (SELECT DISTINCT FAccName as tt FROM #t) A SET @SQL=@SQL+’ FROM #t group by ffundcode’ exec (@SQL)

欢迎大家阅读《T-SQL,动态聚合查询_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:T-SQL,动态聚合查询_sqlserver

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址