我的查询中有以下行:
我想将这些行合并到一行,如下所示:
请注意,我的表中包含更多这样的行,因此动态解决方案将不胜感激。此外,有几行在Number 1或Number 2列中都有NULL值。
...谢谢
答案 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
如果Category
和Category2
组合在一起,您可以写下:
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