首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个行转列的老有关问题

2012-09-12 
一个行转列的老问题我有这样一个表,其中 Jour 的类型为 datetime,当然时间可能不是正确的顺序IDJOURWeek24

一个行转列的老问题
我有这样一个表,其中 Jour 的类型为 datetime,当然时间可能不是正确的顺序

IDJOUR Week
2482012-05-21 星期一
2492012-05-22 星期二
2502012-05-23 星期三
2512012-05-24 星期四
2522012-05-25 星期五
2532012-05-26 星期六
2542012-05-27 星期天
2552012-05-28 星期一
2562012-05-29 星期二

。。。。。。。。。。。。。。。。。。。。。。。。
有很多这样的日期


请问怎么写一个sql 后能这样显示 

星期一 星期二 星期三 星期四 星期五 星期六 星期天
2012-05-21 2012-05-22 2012-05-23 2012-05-24 2012-05-25 2012-05-26 2012-05-27
2012-05-28 2012-05-29


也就是每行刚好显示一个星期,如果没有相应的日期,就显示空就可以了

谢谢了 :)

[解决办法]

SQL code
--> 测试数据:[tb]IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]GOCREATE TABLE [tb]([ID] INT,[JOUR] DATETIME,[Week] VARCHAR(6))INSERT [tb]SELECT 248,'2012-05-21','星期一' UNION ALLSELECT 249,'2012-05-22','星期二' UNION ALLSELECT 250,'2012-05-23','星期三' UNION ALLSELECT 251,'2012-05-24','星期四' UNION ALLSELECT 252,'2012-05-25','星期五' UNION ALLSELECT 253,'2012-05-26','星期六' UNION ALLSELECT 254,'2012-05-27','星期天' UNION ALLSELECT 255,'2012-05-28','星期一' UNION ALLSELECT 256,'2012-05-29','星期二' UNION ALLSELECT 257,'2012-05-30','星期三' UNION ALLSELECT 258,'2012-05-31','星期四' UNION ALLSELECT 259,'2012-06-01','星期五' UNION ALLSELECT 260,'2012-06-02','星期六' UNION ALLSELECT 261,'2012-06-03','星期天' UNION ALLSELECT 262,'2012-06-04','星期一' UNION ALLSELECT 263,'2012-06-05','星期二' UNION ALLSELECT 264,'2012-06-06','星期三' UNION ALLSELECT 265,'2012-06-07','星期四' UNION ALLSELECT 266,'2012-06-08','星期五' UNION ALLSELECT 267,'2012-06-09','星期六'GO--> 测试语句:select max(case when Week='星期一' then convert(varchar(10),JOUR,120) else '' end) as 星期一,max(case when Week='星期二' then convert(varchar(10),JOUR,120) else '' end) as 星期二,max(case when Week='星期三' then convert(varchar(10),JOUR,120) else '' end) as 星期三,max(case when Week='星期四' then convert(varchar(10),JOUR,120) else '' end) as 星期四,max(case when Week='星期五' then convert(varchar(10),JOUR,120) else '' end) as 星期五,max(case when Week='星期六' then convert(varchar(10),JOUR,120) else '' end) as 星期六,max(case when Week='星期天' then convert(varchar(10),JOUR,120) else '' end) as 星期天from (select *,row_id=row_number() over(partition by Week order by [JOUR]) from [tb]) as tgroup by row_id/*星期一        星期二        星期三        星期四        星期五        星期六        星期天---------- ---------- ---------- ---------- ---------- ---------- ----------2012-05-21 2012-05-22 2012-05-23 2012-05-24 2012-05-25 2012-05-26 2012-05-272012-05-28 2012-05-29 2012-05-30 2012-05-31 2012-06-01 2012-06-02 2012-06-032012-06-04 2012-06-05 2012-06-06 2012-06-07 2012-06-08 2012-06-09 (3 行受影响)*/ 

热点排行