如果以前曾提出过这个问题,我深表歉意。
这是我原来的表格。
| 用户名 | 用户类型 | 团队 |
|---|---|---|
| 本杰明·特纳 | 支持 | 猫福利协会 |
| 路易斯·贝内特 | 主要 | 猫福利协会 |
| 本杰明·特纳 | 支持 | 安达尔青年队 |
| 本杰明·特纳 | 支持 | ACaretalyst |
| 辛西娅·本德 | 主要 | 志愿者中心 |
| 本杰明·特纳 | 支持 | 志愿者中心 |
我想使用排序方式重新排列它,以便主帐户首先出现,然后是同一团队的支持帐户。本杰明支持但没有主帐户的其他团队将添加在底部。
“预期结果”
| 用户名 | 用户类型 | 团队 |
|---|---|---|
| 路易斯·贝内特 | 主要 | 猫福利协会 |
| 本杰明·特纳 | 支持 | 猫福利协会 |
| 辛西娅·本德 | 主要 | 志愿者中心 |
| 本杰明·特纳 | 支持 | 志愿者中心 |
| 本杰明·特纳 | 支持 | 安达尔青年队 |
| 本杰明·特纳 | 支持 | ACaretalyst |
我已经尝试过了 “按用户类型、团队排序”,这会导致首先列出所有主帐户,然后是支持帐户(意味着同一团队的主帐户和支持帐户不会粘在一起)
| 用户名 | 用户类型 | 团队 |
|---|---|---|
| 路易斯·贝内特 | 主要 | 猫福利协会 |
| 辛西娅·本德 | 主要 | 志愿者中心 |
| 本杰明·特纳 | 支持 | 猫福利协会 |
| 本杰明·特纳 | 支持 | 志愿者中心 |
| 本杰明·特纳 | 支持 | 安达尔青年队 |
| 本杰明·特纳 | 支持 | ACaretalyst |
另一方面,如果我尝试“按团队、用户类型排序”,则主帐户和支持帐户会粘在一起,但没有任何 Main 的团队将首先出现(按字母顺序排列)
| 用户名 | 用户类型 | 团队 |
|---|---|---|
| 本杰明·特纳 | 支持 | ACaretalyst |
| 本杰明·特纳 | 支持 | 安达尔青年队 |
| 路易斯·贝内特 | 主要 | 猫福利协会 |
| 本杰明·特纳 | 支持 | 猫福利协会 |
| 辛西娅·本德 | 主要 | 志愿者中心 |
| 本杰明·特纳 | 支持 | 志愿者中心 |
是否有任何方法可以构建顺序,使第一行始终首先是主帐户,然后是同一团队的相关支持(无论团队的字母顺序如何) 然后,任何剩余的支持帐户(没有任何主帐户)将添加到底部
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
所以我们想根据这些规则进行排序
团队(其中具有MainUserType的用户)团队(以确保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