当前位置: 代码迷 >> SQL >> sqlserver 行转列例证
  详细解决方案

sqlserver 行转列例证

热度:129   发布时间:2016-05-05 15:09:37.0
sqlserver 行转列例子

代码如下:

?

create proc [dbo].[getTimeStatusFromTaskLog]as--首先将临时表清空delete from [TEMP_TASK_LOG_STEP1]delete from [TEMP_TASK_LOG_STEP2]--先将所有的任务的前三条外呼记录行转换成列insert into [TEMP_TASK_LOG_STEP1]select taskid,case when CALL_SEQ='2' then ENDTIME end as  'firstTime',case when CALL_SEQ='2' then operflag end as  'firstStatus',case when CALL_SEQ='3' then ENDTIME end as  'secondTime',case when CALL_SEQ='3' then operflag end as  'secondStatus',case when CALL_SEQ='4' then ENDTIME end as  'thirdTime',case when CALL_SEQ='4' then operflag end as  'thirdStatus'from T_QUESTIONNAIRE_TASK_LOG--将三行合并成一行,往临时表中填数据,让外面的表左外连接用insert into [TEMP_TASK_LOG_STEP2]select taskid,MAX(firstTime) as 'firsttime',MAX(firstStatus) as 'firstStatus',MAX(secondTime) as 'secondtime',MAX(secondStatus) as 'secondStatus',MAX(thirdTime) as 'thirdtime',MAX(thirdStatus) as 'thirdStatus'from [TEMP_TASK_LOG_STEP1] group by taskid
?

?

一般行转列都会找到一些固定的列。比如此例子中的CALL_SEQ的值,就是2、3、4的固定值。

?

?

refurl:http://www.cnblogs.com/kerrycode/archive/2010/07/28/1786547.html

?

?

?

  相关解决方案