我正在嘗試對 ID 列中的記錄進行分組,并檢查是否有任何狀態為 1,然后將狀態替換為“IN”。如果在狀態中找不到值 1,則將狀態替換為“OUT”。
原表:
| ID | 地位 |
|---|---|
| ID_1 | 1 |
| ID_1 | 0 |
| ID_2 | 1 |
| ID_1 | 0 |
| ID_2 | 1 |
| ID_3 | 0 |
| ID_2 | 0 |
| ID_3 | 0 |
決賽桌應該是這樣的
| ID | 地位 |
|---|---|
| ID_1 | 在 |
| ID_2 | 在 |
| ID_3 | 出去 |
如果有人可以提供幫助,請告訴我:)
uj5u.com熱心網友回復:
SELECT ID, CASE WHEN MAX(Status) = 1 THEN 'IN'
ELSE 'OUT' END AS Status
FROM myTable
GROUP BY ID
基于評論
SELECT DISTINCT a.ID, COALESCE(b.Status, a.Status)
FROM myTable a LEFT JOIN myTable b ON a.ID = b.ID AND b.Status = 'IN'
uj5u.com熱心網友回復:
將 1,0 轉換為 IN,OUT 并取其最小值(最小值因為“IN”小于“OUT”):
select id, min(case status when 1 then 'IN' else 'OUT' end) as status
from mytable
group by id
如果是mysql的話,稍微簡單一點:
select id, min(case status then 'IN' else 'OUT' end) as status
from mytable
group by id
因為在mysql中,1為真,0為假。
如果列具有值 'IN' 和 'OUT' 它就變成:
select id, min(status)
from mytable
group by id
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/400985.html
標籤:sql
