Sql-Server
如何對數據進行分組,但僅按特定順序獲取行(範例應該更清楚;))
我有一些事情需要做,但我不知道該怎麼做 :)
我有以下數據:
我想要的結果
這些數據來自帶有 group by 的查詢(假設它是來自多個商店的數據,並且某些商店的“類型”與其他商店不同)。
我需要做的是只能通過“藝術”獲得一行,但具有最好的“類型”(“類型”=客戶的現金返還)
我需要按該順序輸入“類型”
- 米
- C
- 從
我怎樣才能把它放在我的 T-SQL 語句中?我仍然可以稍後在 .NET 中做一些事情,但我寧願將所有內容都放在 SQL 語句中。
感謝您的幫助 :)
您可以為每個應用一個行號
Art
並明確指定該順序與您的偏好匹配:;WITH src AS ( -- this CTE represents your "query with a group by" SELECT Art, Type FROM ( VALUES (2215, 'Z'), (2215, 'C'), (2215, 'M'), (2216, 'C'), (2216, '') ) AS v(Art, Type) ), apply_rn AS ( SELECT Art, Type, rn = ROW_NUMBER() OVER (PARTITION BY Art ORDER BY CASE Type WHEN 'M' THEN 1 WHEN 'C' THEN 2 WHEN 'Z' THEN 3 ELSE 4 END) FROM src ) SELECT Art, Type FROM apply_rn WHERE rn = 1 ORDER BY Art;
結果:
Art Type ---- ---- 2215 M 2216 C