如果以前曾提出過這個問題,我深表歉意。
這是我原來的表格。
使用者名稱 | 使用者類型 | 團隊 |
---|---|---|
本傑明·特納 | 支援 | 貓福利協會 |
路易斯貝內特 | 主要 | 貓福利協會 |
本傑明·特納 | 支援 | 安達爾青年隊 |
本傑明·特納 | 支援 | ACaretalyst |
辛西婭·本德 | 主要 | 志工中心 |
本傑明·特納 | 支援 | 志工中心 |
我想使用排序方式重新排列它,以便主帳戶首先出現,然後是同一團隊的支援帳戶。本傑明支援但沒有主帳戶的其他團隊將添加在底部。
「預期結果」
使用者名稱 | 使用者類型 | 團隊 |
---|---|---|
路易斯貝內特 | 主要 | 貓福利協會 |
本傑明·特納 | 支援 | 貓福利協會 |
辛西婭·本德 | 主要 | 志工中心 |
本傑明·特納 | 支援 | 志工中心 |
本傑明·特納 | 支援 | 安達爾青年隊 |
本傑明·特納 | 支援 | ACaretalyst |
我已經嘗試過了 “按使用者類型、團隊排序”,這會導致首先列出所有主帳戶,然後是支援帳戶(意味著同一團隊的主帳戶和支援帳戶不會黏在一起)
使用者名稱 | 使用者類型 | 團隊 |
---|---|---|
路易斯貝內特 | 主要 | 貓福利協會 |
辛西婭·本德 | 主要 | 志工中心 |
本傑明·特納 | 支援 | 貓福利協會 |
本傑明·特納 | 支援 | 志工中心 |
本傑明·特納 | 支援 | 安達爾青年隊 |
本傑明·特納 | 支援 | ACaretalyst |
另一方面,如果我嘗試“按團隊、用戶類型排序”,則主帳戶和支援帳戶會粘在一起,但沒有任何 Main 的團隊將首先出現(按字母順序排列)
使用者名稱 | 使用者類型 | 團隊 |
---|---|---|
本傑明·特納 | 支援 | ACaretalyst |
本傑明·特納 | 支援 | 安達爾青年隊 |
路易斯貝內特 | 主要 | 貓福利協會 |
本傑明·特納 | 支援 | 貓福利協會 |
辛西婭·本德 | 主要 | 志工中心 |
本傑明·特納 | 支持 | 志工中心 |
是否有任何方法可以建立順序,使第一行始終首先是主帳戶,然後是同一團隊的相關支援(無論團隊的字母順序如何) 然後,任何剩餘的支援帳戶(沒有任何主帳戶)將添加到底部
P粉6148403632023-09-13 13:12:21
所以我們想根據這些規則進行排序
團隊
(其中具有Main
UserType
的使用者)團隊
(以確保Main
和Support
一起進行)團隊
中按UserType
排序:Main
、Support
以及所有其他我們可以嘗試這樣做
with MyUsers as ( select user_name, Usertype, Team, case when exists (select 1 from MyTable m where m.Team = Team and m.Usertype = 'Main') then 1 else 2 end CompleteGroupOrder, case when Usertype = 'Main' then 1 when Usertype = 'Support' then 2 else 3 end TeamOrder from MyTable) select user_name, Usertype, Team from MyUsers order by CompleteGroupOrder, Team, TeamOrder