日期:2014-05-17  浏览次数:20610 次

SQL数据库表排版问题请教


这是我数据库里面的数据  我想显示成


我的语句是这样的

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') 


怎样能变成第一列是由星期一到星期日的顺序呢?

还有如果我要按照条件来显示数据库里面的数据  在哪里添加条件?
数据库 SQL 行业数据 select

------解决方案--------------------
周末少人回复也正常,你这个结果是因为一二三四五六日这些中文字的排序不是按照数字的大小来排,如果仅仅只有7天,那就order by case when dutyweek='星期一' then 1 when dutyweek='星期二' then 2 .....后面自己填完 
------解决方案--------------------

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
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 ') 


C#里面是

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 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 ')";