sql关于pivot行列转换的问题

表test:weekincome星期一2000星期二2200星期一800星期三3000星期四2800星期五2500星期六2100星期日3500星期日1100通过pivot... 表 test:
week income
星期一 2000
星期二 2200
星期一 800
星期三 3000
星期四 2800
星期五 2500
星期六 2100
星期日 3500
星期日 1100
通过pivot行列转换得到结果:
星期一 星期二 星期三 星期四 星期五 星期六 星期日

2800 2200 3000 2800 2500 2100 4600
求代码?
展开
 我来答
小游1988
2013-09-07 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:88
采纳率:0%
帮助的人:101万
展开全部

declare @sql varchar(8000)
--获得week集合
select @sql=isnull(@sql+',','')+week from test group by week           
set @sql='select * from test pivot (max(income) for week in ('+@sql+'))a'
exec(@sql)

 

下面是我之前写过的一个例子,你可以看看:

17号观察室
2013-09-07 · TA获得超过5730个赞
知道大有可为答主
回答量:3666
采纳率:66%
帮助的人:1356万
展开全部
--楼主 这个是典型的行转列
--脚本如下
select 星期一 , 星期二, 星期三, 星期四, 星期五, 星期六 , 星期日

from test pivot (sum(income) for week in(星期一 , 星期二, 星期三, 星期四, 星期五, 星期六 , 星期日)) as tt
--如果解决了楼主的问题 请采纳
--有什么疑问可以随时找我
追问
提示有语法错误
追答

我没有调试 等等我调试一下 调试还要建表


语法没有问题 你看看你的income列是不是字符串类型 如果是整型 就没有问题

楼下那是列是动态的情况下 比较合适 这样把问题搞复杂了 

请尊重先回答者

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式