日期:2014-05-18  浏览次数:20727 次

求教sql语句
时间 项目1 项目2 项目3 项目4 项目5
2012-1-1 00:00:00 1 2 3 4 5
2012-1-1 01:00:00 6 7 8 9 10
2012-1-1 02:00:00 11 12 13 14 15
2012-1-1 03:00:00 16 17 18 19 20
...

取出2011-1-1的格式
时间 0 1 2 3 4 5 6 7 8 9。。。。24
项目1 1 6 11 16。。。
项目2 2 7 12 17。。。
项目3 3 8 13 18。。。
项目4 4 9 14 20。。。
项目5 5 10 20 25。。。









------解决方案--------------------
SQL code
--       时间 项目1 项目2 项目3 项目4 项目5 
--2012-1-1 00:00:00 1 2 3 4 5
--2012-1-1 01:00:00 6 7 8 9 10
--2012-1-1 02:00:00 11 12 13 14 15
--2012-1-1 03:00:00 16 17 18 19 20
--...
if OBJECT_ID('tb') is not null
drop table tb
go
create table tb(时间 varchar(50),项目1 int,项目2 int, 项目3 int, 项目4 int, 项目5 int,)
insert into tb values('2012-1-1 00:00:00', 1, 2 ,3 ,4 ,5)
insert into tb values('2012-1-1 01:00:00', 6, 7 ,8 ,9 ,10)
insert into tb values('2012-1-1 02:00:00', 11, 12, 13, 14 ,15)
insert into tb values('2012-1-1 03:00:00', 16, 17 ,18, 19 ,20)
--取出2011-1-1的格式
--时间  0 1 2 3 4 5 6 7 8 9。。。。24
--项目1 1 6 11 16。。。
--项目2 2 7 12 17。。。
--项目3 3 8 13 18。。。
--项目4 4 9 14 20。。。
--项目5 5 10 20 25。。。

select '项目1'as 时间 ,
max(case DATEPART(HH,时间)when 0 then  项目1  else '0' end ) '0',
max(case DATEPART(HH,时间)when 1 then  项目1  else '0' end ) '1',
max(case DATEPART(HH,时间)when 2 then  项目1  else '0' end ) '2',
max(case DATEPART(HH,时间)when 3 then  项目1  else '0' end ) '3'
from tb t
union all
select '项目2'as 时间 ,
max(case DATEPART(HH,时间)when 0 then  项目2  else '0' end ) '0',
max(case DATEPART(HH,时间)when 1 then  项目2  else '0' end ) '1',
max(case DATEPART(HH,时间)when 2 then  项目2  else '0' end ) '2',
max(case DATEPART(HH,时间)when 3 then  项目2  else '0' end ) '3'
from tb t
  union all
select '项目3'as 时间 ,
max(case DATEPART(HH,时间)when 0 then  项目3  else '0' end ) '0',
max(case DATEPART(HH,时间)when 1 then  项目3  else '0' end ) '1',
max(case DATEPART(HH,时间)when 2 then  项目3  else '0' end ) '2',
max(case DATEPART(HH,时间)when 3 then  项目3  else '0' end ) '3'
from tb t
  union all
  select '项目4'as 时间 ,
max(case DATEPART(HH,时间)when 0 then  项目4  else '0' end ) '0',
max(case DATEPART(HH,时间)when 1 then  项目4  else '0' end ) '1',
max(case DATEPART(HH,时间)when 2 then  项目4  else '0' end ) '2',
max(case DATEPART(HH,时间)when 3 then  项目4  else '0' end ) '3'
from tb t
  union all
  select '项目5'as 时间 ,
max(case DATEPART(HH,时间)when 0 then  项目5  else '0' end ) '0',
max(case DATEPART(HH,时间)when 1 then  项目5  else '0' end ) '1',
max(case DATEPART(HH,时间)when 2 then  项目5  else '0' end ) '2',
max(case DATEPART(HH,时间)when 3 then  项目5  else '0' end ) '3'
from tb t

时间  0      1      2      3
----- ----