【问题标题】:merger multiple row to one in sql server在sql server中将多行合并为一
【发布时间】:2017-12-13 09:43:35
【问题描述】:

我有一张如下表,

Date                 Type     ClassA   ClassB
--------------------------------------------------
02/05/2015             A        1        
04/05/2015             B        2        - 
04/05/2015             B        -        3  
05/05/2015             A        4        - 
05/05/2015             B        5        - 

我正在尝试合并以下行(必需输出)

Date                 Type     ClassA   ClassB
--------------------------------------------------
02/05/2015             A        1        -
04/05/2015             B        2        3 
05/05/2015             A        4        - 
05/05/2015             B        5        - 

在上面的例子中,当 'Date' 和 'Type' 在 2 个单独的行中匹配时,我应该将其他列值合并为一行

【问题讨论】:

    标签: sql-server tsql merge


    【解决方案1】:
    CREATE TABLE #Table1
        ([Date] datetime, [Type] varchar(1), [ClassA] INT, [ClassB] INT)
    ;
    
    INSERT INTO #Table1
        ([Date], [Type], [ClassA], [ClassB])
    VALUES
        ('2015-02-05 00:00:00', 'A', '1', NULL),
        ('2015-04-05 00:00:00', 'B', '2', NULL),
        ('2015-04-05 00:00:00', 'B', NULL, '3'),
        ('2015-05-05 00:00:00', 'A', '4', NULL),
        ('2015-05-05 00:00:00', 'B', '5', NULL)
    ;
    
    SELECT [Date] ,[Type], MAX(CLASSA) CLASSA,  MAX(ClassB)ClassB FROM #Table1
    GROUP BY [Date] ,[Type]
    

    【讨论】:

      【解决方案2】:

      试试这个:

      SELECT date, type, SUM(classA), SUM(classB)
      FROM yourtable
      GROUP BY date, type
      

      【讨论】:

        猜你喜欢
        • 2011-12-21
        • 2012-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 2018-04-22
        相关资源
        最近更新 更多