当前位置: 代码迷 >> Sql Server >> 大家看看这个SQL要如何实现
  详细解决方案

大家看看这个SQL要如何实现

热度:101   发布时间:2016-04-27 14:30:55.0
大家看看这个SQL要怎么实现。
公告标题 公告内容 公告时间
测试1 测试1 2012-02-14 14:10:14.000
  测试4 测试4 2012-02-14 14:10:14.000
测试2 测试2 2012-02-15 14:10:29.000
测试3 测试3 2012-02-16 14:10:37.000

这里数据库里面的数据格式。
 要求这样显示

  时间1(比如2-14) 2-15 2-16
  标题1 标题2 标题3
  标题4

时间是动态的,但是显示的时候要把时间作为列来显示。sql2005或者2008中。

------解决方案--------------------
SQL code
create table sx5(公告标题 varchar(5), 公告内容 varchar(5), 公告时间 datetime)insert into sx5select '测试1', '测试1', '2012-02-14 14:10:14.000' union allselect '测试4', '测试4', '2012-02-14 14:10:14.000' union allselect '测试2', '测试2', '2012-02-15 14:10:29.000' union allselect '测试3', '测试3', '2012-02-16 14:10:37.000'declare @sql varchar(6000),@ds varchar(2000)select @ds=stuff((select ','+ds from(select distinct '['+convert(varchar,公告时间,23)+']' ds from sx5) yfor xml path('')),1,1,'')select @sql='select [email protected]+'from (select row_number() over(partition by convert(varchar,公告时间,23) order by 公告时间) rn, 公告标题,convert(varchar,公告时间,23) d from sx5) tpivot(max(t.公告标题) for t.d in([email protected]+')) x'exec(@sql)2012-02-14 2012-02-15 2012-02-16---------- ---------- ----------测试1        测试2        测试3测试4        NULL       NULL(2 row(s) affected)
  相关解决方案