我有一个查询,将两个不同的表中的一些选项联合起来
我目前的最终结果如下:
ColA ColB ColC
-------------------------
1 | NULL DEF 1
2 | ABC DEF 1
3 | NULL GBY 1
B列最多有两个具有相同值的记录。在这种情况下,我只想选择A列没有NULL的记录。
最终结果将是:
ColA ColB ColC
-------------------------
1 | ABC DEF 1
2 | NULL GBY 1
到目前为止,我已经用select选择了原始联盟,我认为我需要某种WHERE,HAVING或GROUP BY。
有什么想法吗?
答案 0 :(得分:3)
也许你可以使用ROW_NUMBER
的CTE:
WITH CTE AS
(
SELECT ColA, ColB, ColC,
RN = row_number() over (partition by ColB Order By ColA DESC)
FROM dbo.TableName -- or your query
)
SELECT ColA, ColB, ColC
FROM CTE
WHERE RN = 1
答案 1 :(得分:0)
IF OBJECT_ID('tempdb..#test') IS NOT NULL
DROP TABLE #test
CREATE TABLE #test (Col1 char(10), col2 char(10))
INSERT INTO #test(Col1,col2) VALUES
(NULL,'DEF'),
('ABC','ABC'),
(NULL,'DEF')
select distinct * from #test
where col2 is not null or col1 in (
select col1 from #test
group by col1
having max(col2) is null)
答案 2 :(得分:0)
试试这个:
select colA, max(colB) as colB, colC
from table
group by colA, colC