在开发中,经常会遇到要吧一行行数据按照某一行进行分组
USE [OA]GO/****** Object: StoredProcedure [dbo].[usp_report_GatherDataMsgRpt] Script Date: 12/02/2014 10:42:22 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROC [dbo].[usp_report_GatherDataMsgRpt]@datamsgid intASbeginDECLARE @t_dataPublish_id INT ,@t_dataPublishColumn_id INT , @execSQL VARCHAR(4000),@temSql1 VARCHAR(4000) ,@temSql2 VARCHAR(4000),@columnKey varchar(200)SELECT @t_dataPublish_id=@datamsgidSELECT @execSQL='' ,@temSql1='',@temSql2='',@columnKey =''DECLARE Cur CURSORFORSELECT t1.idFROM dbo.t_dataPublishColumn t1WHERE t1.t_dataPublish_id = @t_dataPublish_idSELECT @execSQL = 'SELECT 'OPEN CurFETCH NEXT FROM Cur INTO @t_dataPublishColumn_idWHILE @@fetch_status = 0BEGINSELECT @columnKey=''SELECT@columnKey =LTRIM(t2.columnName)FROM t_dataPublishColumn t2WHERE t2.id=@t_dataPublishColumn_idSET @temSql1 = @temSql1 + ',MAX(' + LTRIM(@columnKey) + ') as '+ LTRIM(@columnKey)SET @temSql2 = @temSql2 + ',CASE WHEN t2.t_dataPublishColumn_id='+ LTRIM(@t_dataPublishColumn_id) + ' then cellValue END '+ LTRIM(@columnKey)FETCH NEXT FROM Cur INTO @t_dataPublishColumn_idENDCLOSE CurDEALLOCATE CurSELECT @execSQL = @execSQL + SUBSTRING(@temSql1,2,LEN(@temSql1)) + ' FROM (SELECT t2.rownum' + @temSql2+ 'FROM t_dataPublishColumn t1,t_dataPublishDetail t2 WHERE t1.id=t2.t_dataPublishColumn_id AND t1.t_dataPublish_id='+ LTRIM(@t_dataPublish_id) + ') x GROUP BY x.rownum'PRINT @execSQLEXEC(@execSQL)END