如果以前曾提出過這個問題,我深表歉意。
這是我原來的表格。
用戶名 | 用戶類型 | 團隊 |
---|---|---|
本杰明·特納 | 支持 | 貓福利協(xié)會 |
路易斯·貝內特 | 主要 | 貓福利協(xié)會 |
本杰明·特納 | 支持 | 安達爾青年隊 |
本杰明·特納 | 支持 | ACaretalyst |
辛西婭·本德 | 主要 | 志愿者中心 |
本杰明·特納 | 支持 | 志愿者中心 |
我想使用排序方式重新排列它,以便主帳戶首先出現(xiàn),然后是同一團隊的支持帳戶。本杰明支持但沒有主帳戶的其他團隊將添加在底部。
“預期結果”
用戶名 | 用戶類型 | 團隊 |
---|---|---|
路易斯·貝內特 | 主要 | 貓福利協(xié)會 |
本杰明·特納 | 支持 | 貓福利協(xié)會 |
辛西婭·本德 | 主要 | 志愿者中心 |
本杰明·特納 | 支持 | 志愿者中心 |
本杰明·特納 | 支持 | 安達爾青年隊 |
本杰明·特納 | 支持 | ACaretalyst |
我已經(jīng)嘗試過了 “按用戶類型、團隊排序”,這會導致首先列出所有主帳戶,然后是支持帳戶(意味著同一團隊的主帳戶和支持帳戶不會粘在一起)
用戶名 | 用戶類型 | 團隊 |
---|---|---|
路易斯·貝內特 | 主要 | 貓福利協(xié)會 |
辛西婭·本德 | 主要 | 志愿者中心 |
本杰明·特納 | 支持 | 貓福利協(xié)會 |
本杰明·特納 | 支持 | 志愿者中心 |
本杰明·特納 | 支持 | 安達爾青年隊 |
本杰明·特納 | 支持 | ACaretalyst |
另一方面,如果我嘗試“按團隊、用戶類型排序”,則主帳戶和支持帳戶會粘在一起,但沒有任何 Main 的團隊將首先出現(xiàn)(按字母順序排列)
用戶名 | 用戶類型 | 團隊 |
---|---|---|
本杰明·特納 | 支持 | ACaretalyst |
本杰明·特納 | 支持 | 安達爾青年隊 |
路易斯·貝內特 | 主要 | 貓福利協(xié)會 |
本杰明·特納 | 支持 | 貓福利協(xié)會 |
辛西婭·本德 | 主要 | 志愿者中心 |
本杰明·特納 | 支持 | 志愿者中心 |
是否有任何方法可以構建順序,使第一行始終首先是主帳戶,然后是同一團隊的相關支持(無論團隊的字母順序如何) 然后,任何剩余的支持帳戶(沒有任何主帳戶)將添加到底部
所以我們想根據(jù)這些規(guī)則進行排序
團隊
(其中具有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