有一个表,描述班次和时段的关系
班次 时段
工厂白班 工厂白班上午
工厂白班 工厂白班下午
工厂白班 工厂白班加班
职能白班 职能白班上午
职能白班 职能白班下午
职能白班 职能白班加班
现在要将这个进行一个转换 我要得形式是
时段1 时段2 时段3
工厂白班上午 工厂白班下午 工厂白班加班
职能白班上午 职能白班下午 职能白班加班
。。
怎么写sql
班次 时段
工厂白班 工厂白班上午
工厂白班 工厂白班下午
工厂白班 工厂白班加班
职能白班 职能白班上午
职能白班 职能白班下午
职能白班 职能白班加班
现在要将这个进行一个转换 我要得形式是
时段1 时段2 时段3
工厂白班上午 工厂白班下午 工厂白班加班
职能白班上午 职能白班下午 职能白班加班
。。
怎么写sql
解决方案 »
- SQL 约束 如果约束值为假则用默认值
- 某字段重复的记录,如何查找出来后在值前面加个标识
- 急急!远程两台数据库服务器用复制方法实现数据同步是否可行可靠?急急!
- asp.net访问SQLServer 2000数据库连接超时
- 急。。。在线等候。。。高人帮忙
- MSSQL中如何匹配和替换近似文本?
- SuperSocket 信息: (SpnRegister) : Error 1355。这个错误怎么解决?
- 请问Image类型的数据如何读取出来?
- access导为sql后sql 语句出错--sql日期函数问题
- 如何配置ODBC ?
- 根据类似发送路径字段(999999-99999-90302-90303),和某一个字段值(99999)查询其上个节点?
- 聚集索引和非聚集索引的概念、区别、及使用方法?
http://blog.csdn.net/xys_777/archive/2010/06/22/5685953.aspx
insert into tb values('工厂白班', '工厂白班上午')
insert into tb values('工厂白班', '工厂白班下午')
insert into tb values('工厂白班', '工厂白班加班')
insert into tb values('职能白班', '职能白班上午')
insert into tb values('职能白班', '职能白班下午')
insert into tb values('职能白班', '职能白班加班')
godeclare @sql varchar(8000)
set @sql = 'select 班次 '
select @sql = @sql + ' , max(case px when ''' + cast(px as varchar) + ''' then 时段 else '''' end) [时段' + cast(px as varchar) + ']'
from (select distinct px from (select t.* , px = (select count(1) from tb where 班次 = t.班次 and 时段 < t.时段) + 1 from tb t)m) as a
set @sql = @sql + ' from (select t.* , px = (select count(1) from tb where 班次 = t.班次 and 时段 < t.时段) + 1 from tb t) m group by 班次'
exec(@sql) drop table tb/*
班次 时段1 时段2 时段3
-------------------- -------------------- -------------------- --------------------
工厂白班 工厂白班加班 工厂白班上午 工厂白班下午
职能白班 职能白班加班 职能白班上午 职能白班下午
*/