我有以下要求
INSERT INTO #test VALUES('20210109', 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', 56, 1)
,('20210328', 45, 0),
('20210327', 56, 0);
對于上述資料集,我想選擇同一日期的所有記錄為 1,如果我沒有看到 1,請選擇零。是否可以在一個查詢中撰寫此內容。最后結果
'20210109', 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熱心網友回復:
試試這個或使用上面戈登先生提到的 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/shujuku/422587.html
標籤:
上一篇:Mssql錯誤:選擇串列中的列'dbo.History.Email'無效,因為它既不包含在聚合函式中,也不包含在GROUPBY子句中
下一篇:數一數資料庫中的值改變了多少次?
