数据库行列转换问题
这是我数据库里面的数据 我想变成下面的样子
代码如下
declare @s nvarchar(4000)
Select @s=isnull(@s+',','')+quotename([DutyDate])
from DutyInfo group by[DutyDate]
exec('select * from DutyInfo pivot (max([DutyName]) for [DutyDate] in('+@s+'))b ')
我想按照星期一到星期日的书序排列 该如何修改?
还有我想去掉sign这一列和如何按照DutyDate里面的数据的条件查询显示 该如何添加语句呢?
急啊,求各位大虾帮帮忙 小弟在线等! 数据库 行业数据 SQL select pivot
[解决办法]
对,当你赋予一个别名之后,最省事的方法就是带上别名,如a.dutydate,这样当你一个表使用了几个别名时,就不会由于名字冲突而报错,这里的省事是为了后续调试着想,写的时候当然会比写SELECT *会麻烦一点,但是有些编程规范还是要的
[解决办法]
string str = "declare @s nvarchar(4000) Select @s=isnull(@s+',','')+quotename([DutyDate]) from DutyInfo where DutyDate between'" + DateTime.Now.ToString("yyyyMMdd") + "'and'" + dt.ToString("yyyyMMdd") + "'group by [DutyDate] exec('select * from (SELECT [DutyDate],[Dutyweek],[DutyName] FROM DutyInfo)a pivot (max([DutyName]) for [DutyDate] in('+@s+'))b order by case when Dutyweek=''星期一'' then 1 when Dutyweek=''星期二'' then 2 when Dutyweek=''星期三'' then 3 when Dutyweek=''星期四'' then 4 when Dutyweek=''星期五'' then 5 when Dutyweek=''星期六'' then 6 when Dutyweek=''星期日'' then 7 END ')";