SQL ; Comment écrire une instruction « Order By » qui change dès que la première correspondance est trouvée
P粉808697471
P粉808697471 2023-09-12 17:25:22
0
1
429

Désolé si cette question a déjà été posée.

C'est mon formulaire original.

Nom d'utilisateur Type d'utilisateur Équipe
Benjamin Turner Support Association de protection des chats
Louis Bennett Principal Association de protection des chats
Benjamin Turner Support Équipe des jeunes d'Andal
Benjamin Turner Support ACaretalyste
Cynthia Bender Principal Centre des bénévoles
Benjamin Turner Support Centre des bénévoles

Je souhaite le réorganiser en utilisant le tri pour que le compte principal vienne en premier, puis les comptes support de la même équipe. Les autres équipes prises en charge par Benjamin mais qui ne disposent pas de compte principal seront ajoutées en bas.

"Résultats attendus"

Nom d'utilisateur Type d'utilisateur Équipe
Louis Bennett Principal Association de protection des chats
Benjamin Turner Support Association de protection des chats
Cynthia Bender Principal Centre des bénévoles
Benjamin Turner Support Centre des bénévoles
Benjamin Turner Support Équipe des jeunes d'Andal
Benjamin Turner Support ACaretalyste

Je l'ai déjà essayé "Trier par type d'utilisateur, équipe", ce qui fait que tous les comptes principaux sont répertoriés en premier, puis les comptes de support (ce qui signifie que les comptes principal et de support de la même équipe ne seront pas collés ensemble)

Nom d'utilisateur Type d'utilisateur Équipe
Louis Bennett Principal Association de protection des chats
Cynthia Bender Principal Centre des bénévoles
Benjamin Turner Support Association de protection des chats
Benjamin Turner Support Centre des bénévoles
Benjamin Turner Support Équipe des jeunes d'Andal
Benjamin Turner Support ACaretalyste

Par contre, si j'essaye "Trier par Équipe, Type d'Utilisateur", les comptes Principal et Support sont collés ensemble, mais les Équipes sans aucun Principal apparaîtront en premier (par ordre alphabétique)

Nom d'utilisateur Type d'utilisateur Équipe
Benjamin Turner Support ACaretalyste
Benjamin Turner Support Équipe des jeunes d'Andal
Louis Bennett Principal Association de protection des chats
Benjamin Turner Support Association de protection des chats
Cynthia Bender Principal Centre des bénévoles
Benjamin Turner Support Centre des bénévoles

Y a-t-il un moyen de structurer l'ordre pour que la première ligne soit toujours le compte principal en premier, puis les supports associés pour la même équipe (quel que soit l'ordre alphabétique des équipes) Ensuite, tous les comptes de support restants (sans compte principal) seront ajoutés en bas

P粉808697471
P粉808697471

répondre à tous(1)
P粉614840363

Nous voulons donc trier en fonction de ces règles

  • Utilisateurs ayant terminé 团队(其中具有Main UserType en premier)
  • Puis procédez ensemble par 团队(以确保MainSupport)
  • Enfin, dans chaque 团队中按UserType排序:MainSupport et dans tous les autres
  • >

Nous pouvons essayer ça

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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!