在SQL Server中将2行合并为1

时间:2017-06-15 11:41:10

标签: sql sql-server

我的查询中有以下行:

enter image description here

我想将这些行合并到一行,如下所示:

enter image description here

请注意,我的表中包含更多这样的行,因此动态解决方案将不胜感激。此外,有几行在Number 1或Number 2列中都有NULL值。

...谢谢

3 个答案:

答案 0 :(得分:2)

一种方法使用聚合函数:

select category, category_2,
       max(number_1) as number_1, max(number_2) as number_2
from t
group by category, category_2;

您也可以修复基础查询,因此它不会返回多行。如果感兴趣,请在问题中询问另一个问题。

答案 1 :(得分:1)

根据键的含义(让我们假设Category),您可以进行分组:

select Category, max(Category2) as Category2, max(number1) as number1, max(number2) as number2
from table
group by Category

如果CategoryCategory2组合在一起,您可以写下:

select Category, Category2, max(number1) as number1, max(number2) as number2
from table
group by Category, Category2

答案 2 :(得分:1)

这应该工作。这将解决回收多行的问题

DECLARE @MERGE TABLE (Category VARCHAR(10),    Category_2 VARCHAR(10),  
                      Number_1 INT,  Number_2 INT)
INSERT INTO @MERGE VALUES
('A', 'B', NULL,1),
('A', 'B', 5,NULL)

SELECT
 A.Category 
,A.Category_2   
,MAX(A.Number_1) AS Number_1        
,MAX(B.Number_2) AS Number_2

FROM  @MERGE A INNER JOIN @MERGE B
ON A.Category=B.Category
WHERE B.Number_2 IS NOT NULL
AND B.Number_2 IS NOT NULL
GROUP BY  A.Category ,A.Category_2 

输出

Category    Category_2  Number_1    Number_2
  A            B           5          1