Angenommen, ich hätte einen Tisch wie diesen:
+---+---+---+---+---+ |G1 |G2 |G3 |G4 | V | +---+---+---+---+---+ | A | B | C | D | 2 | | E | F | G | H | 4 | | C | D | A | B | 2 | | E | F | G | H | 3 | | E | I | G | L | 7 | +---+---+---+---+---+
G1 und G3 sind VARCHAR-Typen, G2 und G4 sind INT-Typen
Wenn ich ein einfaches GROUP BY auf G1..G4 durchführe, erhalte ich:
SELECT G1,G2,G3,G4,SUM(V) as V FROM Table GROUP BY G1, G2, G3, G4; +---+---+---+---+---+ |G1 |G2 |G3 |G4 | V | +---+---+---+---+---+ | A | B | C | D | 2 | | E | F | G | H | 7 | | C | D | A | B | 2 | | E | I | G | L | 7 | +---+---+---+---+---+
Ich möchte wissen, ob es möglich ist, eine Aggregation für die invertierten Werte G1, G2 <-> G3, G4 durchzuführen. Das Ergebnis, das ich möchte, ist dieses:
+---+---+---+---+---+ +---+---+---+---+---+ |G1 |G2 |G3 |G4 | V | |G1 |G2 |G3 |G4 | V | +---+---+---+---+---+ +---+---+---+---+---+ | A | B | C | D | 4 | 或 | C | D | A | B | 4 | | E | F | G | H | 7 | | E | F | G | H | 7 | | E | I | G | L | 7 | | E | I | G | L | 7 | +---+---+---+---+---+ +---+---+---+---+---+
Ich habe versucht, die umgekehrten Zeilen abzurufen, kann sie aber aufgrund von Duplikaten immer noch nicht zusammenfassen. Meine Testabfrage lautet:
SELECT DISTINCT * FROM Table t1 JOIN Table t2 on t1.G1 = t2.G3 and t1.G2=t2.G4 and t1.G3=t2.G1 and t1.G4=t2.G2 +---+---+---+---+---+---+---+---+---+---+ |G1 |G2 |G3 |G4 | V |G1 |G2 |G3 |G4 | V | +---+---+---+---+---+---+---+---+---+---+ | A | B | C | D | 2 | C | D | A | B | 2 | | C | D | A | B | 2 | A | B | C | D | 2 | +---+---+---+---+---+---+---+---+---+---+
如果我理解正确,将列的顺序反转,使得 A B C D 对应 C D A B。
db<>fiddle