SQL; So schreiben Sie eine „Order By'-Anweisung, die wechselt, sobald die erste Übereinstimmung gefunden wird
P粉808697471
P粉808697471 2023-09-12 17:25:22
0
1
502

Entschuldigung, wenn diese Frage schon einmal gestellt wurde.

Das ist meine ursprüngliche Form.

Benutzername Benutzertyp Team
Benjamin Turner Unterstützung Cat Welfare Association
Louis Bennett Haupt Cat Welfare Association
Benjamin Turner Unterstützung Andal Youth Team
Benjamin Turner Unterstützung ACaretalyst
Cynthia Bender Haupt Freiwilligenzentrum
Benjamin Turner Unterstützung Freiwilligenzentrum

Ich möchte es mithilfe der Sortierung neu anordnen, sodass das Hauptkonto an erster Stelle steht und dann die Support-Konten für dasselbe Team. Weitere Teams, die Benjamin unterstützt, aber über kein Masterkonto verfügen, werden unten hinzugefügt.

„Erwartete Ergebnisse“

Benutzername Benutzertyp Team
Louis Bennett Haupt Cat Welfare Association
Benjamin Turner Unterstützung Cat Welfare Association
Cynthia Bender Haupt Freiwilligenzentrum
Benjamin Turner Unterstützung Freiwilligenzentrum
Benjamin Turner Unterstützung Andal Youth Team
Benjamin Turner Unterstützung ACaretalyst

Ich habe es bereits ausprobiert „Sortieren nach Benutzertyp, Team“ führt dazu, dass zuerst alle Hauptkonten und dann die Supportkonten aufgelistet werden (was bedeutet, dass Haupt- und Supportkonten für dasselbe Team nicht zusammengehalten werden)

Benutzername Benutzertyp Team
Louis Bennett Haupt Cat Welfare Association
Cynthia Bender Haupt Freiwilligenzentrum
Benjamin Turner Unterstützung Cat Welfare Association
Benjamin Turner Unterstützung Freiwilligenzentrum
Benjamin Turner Unterstützung Andal Youth Team
Benjamin Turner Unterstützung ACaretalyst

Wenn ich andererseits „Sortieren nach Team, Benutzertyp“ versuche, bleiben die Haupt- und Supportkonten zusammen, aber die Teams ohne Hauptkonto werden zuerst angezeigt (alphabetisch)

Benutzername Benutzertyp Team
Benjamin Turner Unterstützung ACaretalyst
Benjamin Turner Unterstützung Andal Youth Team
Louis Bennett Haupt Cat Welfare Association
Benjamin Turner Unterstützung Cat Welfare Association
Cynthia Bender Haupt Freiwilligenzentrum
Benjamin Turner Unterstützung Freiwilligenzentrum

Gibt es eine Möglichkeit, die Reihenfolge so zu strukturieren, dass in der ersten Zeile immer zuerst das Hauptkonto und dann der zugehörige Support für dasselbe Team angezeigt wird (unabhängig von der alphabetischen Reihenfolge der Teams)? Dann werden alle verbleibenden Support-Konten (ohne Master-Konto) unten hinzugefügt

P粉808697471
P粉808697471

Antworte allen(1)
P粉614840363

所以我们想根据这些规则进行排序

  • 首先完成团队(其中具有Main UserType的用户)
  • 然后由团队(以确保MainSupport一起进行)
  • 最后,在每个团队中按UserType排序:MainSupport 以及所有其他
  • >

我们可以尝试这样做

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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage