我有如下要求
INSERT INTO #test VALUES('2021009', 12, 1)。)
('20210109', 12, 0) 。
('20210131', 12, 0) 。
('20210131', 12, 0) 。
('20210131', 12, 0) 。
('20210225', 23, 1) 。
('20210225', 23, 0) 。
('20210228', 23, 1) 。
('20210315', 56, 1) 。
('20210326', 45, 1) 。
('20210328', 45, 1) 。
('20210327'/span>, 56, 1)
,('20210328', 45, 0) 。
('20210327', 56, 0) 。
對于上述 資料集,我想選擇同一日期的所有帶1的記錄,如果我沒有看到1,就選擇0。是否有可能在一個查詢中寫到這一點。 最終結果
'2021019', 12, 1
'20210131', 12, 0.
'20210225', 23, 1.
以此類推。
uj5u.com熱心網友回復:
如果我理解正確,你可以直接用max()進行聚合:
select col1, col2, max(col3)
from #test
group by col1, col2;
uj5u.com熱心網友回復:
你可以在一個0的查詢上左聯一個1的查詢,并coalesce其結果:
SELECT COALESCE( ones.col1, zeros.col1)。
COALESCE( ones.col2, zeros.col2)。
COALESCE( ones.col3, zeros.col3)
FROM(SELECT col1, col2, col3
FROM #test
WHERE col3 = 1) ones
LEFT JOIN (SELECT col1, col2, col3
FROM #test
WHERE col3 = 0) zeroes on ones.col1 = zeros.col1
uj5u.com熱心網友回復:
試試這個或者像上面Gordon先生提到的使用max()。
select col1, col2, case when sum(col3) > 0 then 1 else 0 end as col3
from #test
group by col1, col2;
這將檢查col3中是否會有一個大于0的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314797.html
標籤:
上一篇:Mssql錯誤。列'dbo.History.Email'在選擇串列中無效,因為它不包含在聚合函式或GROUPBY子句中。
