求助——SQL2000 【单列】转多列
本帖最后由 TSSCEO 于 2013-08-09 09:13:06 编辑
源表
姓名 日期 状态
张三 2013-8-9 正常
张三 2013-8-10 异常
张三 2013-8-11 正常
张三 2013-8-12 异常
张三 …… ……
目标表
姓名 2013-8-9 2013-8-10 2013-8-11 2013-8-12 ……
张三 2013-8-9 2013-8-10 2013-8-11 2013-8-12 ……
要求:把源表日期列,转成多行(效果见目标表示例),求高人指导,谢谢。
[解决办法]
create table test
(姓名 varchar(12), 日期 varchar(10), 状态 varchar(12))
insert into test
select '张三', '2013-8-9', '正常' union ALL
select '张三', '2013-8-10', '异常' union ALL
select '张三', '2013-8-11', '正常' union ALL
select '张三', '2013-8-12', '异常'
--楼主想要这样:
declare @sql varchar(max)
select @sql=isnull(@sql+',','') +'max(case when 日期='''+日期+''' then 日期 end) ['+日期+']'
from (select distinct 姓名,日期 from test) t
order by t.姓名
select @sql='select 姓名,' +@sql +' from test group by 姓名 '
exec(@sql)
--还是这样:
declare @SQL1 varchar(max)
select @SQL1=isnull(@SQL1+',','') +'max(case when 日期='''+日期+''' then 状态 end) ['+日期+']'
from (select distinct 姓名,日期 from test) t
order by t.姓名
select @SQL1='select 姓名,' +@SQL1 +' from test group by 姓名 '
exec(@SQL1)