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

sql 语句实现,该如何处理

2012-04-22 
sql 语句实现数据库table:idtimecount18:00-9:006029:00-10:0080310:00-11:004019:00-10:00691。。。我想sql

sql 语句实现
数据库table: 
id time count
1 8:00-9:00 60
2 9:00-10:00 80
3 10:00-11:00 40
1 9:00-10:00 69  
1 。
  。
  。
我想sql语句查出来后是这种效果:
 id 8:00-9:00 9:00-10:00 10:00-11:00 。。。。。
 1 60 69

[解决办法]
就是行转列,很多例子,等楼下代码详解。
[解决办法]

SQL code
if object_id('[TB]') is not null drop table [TB]gocreate table [TB] (id int,time nvarchar(22),count int)insert into [TB]select 1,'8:00-9:00',60 union allselect 2,'9:00-10:00',80 union allselect 3,'10:00-11:00',40 union allselect 1,'9:00-10:00',69select * from [TB]select ID,MAX(case when time ='8:00-9:00' then [COUNT] else 0 end ) as '8:00-9:00',MAX(case when time ='9:00-10:00' then [COUNT] else 0 end ) as '9:00-10:00',MAX(case when time ='10:00-11:00' then [COUNT] else 0 end ) as '10:00-11:00'from TBgroup by id/*ID          8:00-9:00   9:00-10:00  10:00-11:00----------- ----------- ----------- -----------1           60          69          02           0           80          03           0           0           40(3 行受影响)
[解决办法]
SQL code
IF OBJECT_ID('tab') IS NOT NULL DROP TABLE tabCREATE TABLE TAB(id INT,[TIME] VARCHAR(20),[COUNT] INT)INSERT INTO tabSELECT 1, '8:00-9:00', 60 UNION ALLSELECT 2, '9:00-10:00', 80 UNION ALLSELECT 3, '10:00-11:00', 40 UNION  ALLSELECT 1, '9:00-10:00' ,69DECLARE @timeProperty VARCHAR(max)declare @sql varchar(max)SET @timeProperty=''SELECT @timeProperty=@timeProperty+','+'['+[time]+']' FROM tab GROUP BY [time]SET @timeProperty=STUFF(@timeProperty,1,1,'')set @sql='SELECT * FROM tab            PIVOT ( SUM([COUNT]) FOR [time] IN ('+@timeProperty+')  ) AS p'EXEC (@sql)/*id          10:00-11:00 8:00-9:00   9:00-10:00----------- ----------- ----------- -----------1           NULL        60          692           NULL        NULL        803           40          NULL        NULL*/
[解决办法]
探讨

求教达人个问题,如果ID 有N个呢?也这样写?

热点排行