2017-06-15 64 views
1

我有我的查询以下行:合并2行1 SQL Server中

enter image description here

我想这些行合并,将呈现如下一行:

enter image description here

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

谢谢...

回答

2

一种方法是使用聚合函数:

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

您可能还可以解决潜在的查询,所以它不会返回多行。如果有兴趣,请询问另一个问题,并在问题中进行查询。

+0

感谢戈登,我不能修复基础查询,因为这是我从客户端查询得到的信息。 – user2007221

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 
+1

谢谢史蒂芬,你的答案都做到了这一招...... – user2007221

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