请问如何在SQL中建立交叉连接视图?

coyue 2003-08-30 01:01:12
如表temp有以下数据:
列头 ID NAME DATE MUN
1 carry 2003-01 100
2 tom 2003-01 203
3 carry 2003-02 102
4 tom 2003-02 111
5 carry 2003-03 99
……

我在视图vewTemp中想实现的效果
列头 NAME 2003-01 2003-02 2003-03 ……
carry 100 102 99
tom 203 111
...全文
55 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2003-08-30
  • 打赏
  • 举报
回复
如果不固定的话,只能用生成SQL语句的方法:

delcare @sql varchar(8000)
set @sql='select Name'
select @sql=@sql+',['+date+']=sum(case date when '''+date+''' then mun end)'
from (select distinct date from temp) a
set @sql=@sql+' from temp group by Name'
exec(@sql)
zjcxc 2003-08-30
  • 打赏
  • 举报
回复
如果你的date值是固定好的,只有给定的几个,可以直接用视图

create view aa
as
select Name
,[2003-1]=sum(case date when '2003-01' then MUN end)
,[2003-1]=sum(case date when '2003-01' then MUN end)
...
from temp group by Name
pengdali 2003-08-30
  • 打赏
  • 举报
回复
只有用过程:

declare @sql varchar(8000)
set @sql = 'select [NAME]'
select @sql = @sql + ',sum(case [DATE] when '''+[DATE]+''' then MUN end) ['+[DATE]+']'
from (select distinct [DATE] from [temp]) as a
select @sql = @sql+' from [temp] group by [NAME]'

exec(@sql)
go

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧