zoukankan      html  css  js  c++  java
  • sqlserver 对多条数据分组


    在开发中,经常会遇到要吧一行行数据按照某一行进行分组


    1. USE [OA]
    2. GO
    3. /****** Object: StoredProcedure [dbo].[usp_report_GatherDataMsgRpt] Script Date: 12/02/2014 10:42:22 ******/
    4. SET ANSI_NULLS ON
    5. GO
    6. SET QUOTED_IDENTIFIER ON
    7. GO
    8. ALTER PROC [dbo].[usp_report_GatherDataMsgRpt]
    9. @datamsgid int
    10. AS
    11. begin
    12. DECLARE @t_dataPublish_id INT ,@t_dataPublishColumn_id INT , @execSQL VARCHAR(4000),@temSql1 VARCHAR(4000) ,@temSql2 VARCHAR(4000)
    13. ,@columnKey varchar(200)
    14. SELECT @t_dataPublish_id=@datamsgid
    15. SELECT @execSQL='' ,@temSql1='',@temSql2='',@columnKey =''
    16. DECLARE Cur CURSOR
    17. FOR
    18. SELECT t1.id
    19. FROM dbo.t_dataPublishColumn t1
    20. WHERE t1.t_dataPublish_id = @t_dataPublish_id
    21. SELECT @execSQL = 'SELECT '
    22. OPEN Cur
    23. FETCH NEXT FROM Cur INTO @t_dataPublishColumn_id
    24. WHILE @@fetch_status = 0
    25. BEGIN
    26. SELECT @columnKey=''
    27. SELECT
    28. @columnKey =
    29. LTRIM(t2.columnName)
    30. FROM t_dataPublishColumn t2
    31. WHERE t2.id=@t_dataPublishColumn_id
    32. SET @temSql1 = @temSql1 + ',MAX(' + LTRIM(@columnKey) + ') as '+ LTRIM(@columnKey)
    33. SET @temSql2 = @temSql2 + ',CASE WHEN t2.t_dataPublishColumn_id='
    34. + LTRIM(@t_dataPublishColumn_id) + ' then cellValue END '
    35. + LTRIM(@columnKey)
    36. FETCH NEXT FROM Cur INTO @t_dataPublishColumn_id
    37. END
    38. CLOSE Cur
    39. DEALLOCATE Cur
    40. SELECT @execSQL = @execSQL + SUBSTRING(@temSql1,2,LEN(@temSql1)) + ' FROM (
    41. SELECT t2.rownum
    42. ' + @temSql2
    43. + '
    44. FROM t_dataPublishColumn t1,t_dataPublishDetail t2 WHERE t1.id=t2.t_dataPublishColumn_id AND t1.t_dataPublish_id='
    45. + LTRIM(@t_dataPublish_id) + ') x GROUP BY x.rownum
    46. '
    47. PRINT @execSQL
    48. EXEC(@execSQL)
    49. END

  • 相关阅读:
    编程心得5
    编程心得2
    心得2
    心得1
    7-11
    7-13
    7-9
    7-8
    7-12
    7-14
  • 原文地址:https://www.cnblogs.com/signheart/p/6595438.html
Copyright © 2011-2022 走看看