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

  • 相关阅读:
    「UVA12293」 Box Game
    「CF803C」 Maximal GCD
    「CF525D」Arthur and Walls
    「CF442C」 Artem and Array
    LeetCode lcci 16.03 交点
    LeetCode 1305 两棵二叉搜索树中的所有元素
    LeetCode 1040 移动石子直到连续 II
    LeetCode 664 奇怪的打印机
    iOS UIPageViewController系统方法崩溃修复
    LeetCode 334 递增的三元子序列
  • 原文地址:https://www.cnblogs.com/signheart/p/6595438.html
Copyright © 2011-2022 走看看