Es müssen einige Sätze einer Tabelle im Zuge eines SELECTs verdoppelt, einige jedoch verdreifacht werden. Abhängig von dem Wert einer Spalte in der Basistabelle.
SELECT A.* FROM Basistabelle A LEFT JOIN (values (1), (2), (3)) X(valueID) ON A.CODE = 3 LEFT JOIN (values (1), (2), (3)) Y(valueID) ON A.CODE != 3 AND Y.valueID <= 2
Der erste LEFT JOIN ist für die SatzverDREIfachung zuständig. Nur Sätze mit dem Kriterium "A.CODE = 3" werden verdreifacht.
Alle anderen Sätze - also "A.CODE != 3" werden nur verDOPPELT - ("Y.valueID <= 2").
Natürlich könnte man beim zweiten Join auch einfach weniger Werte in die Tabelle Y schreiben. Diese Lösung dient nur zur Veranschaulichung.
Keine Kommentare:
Kommentar veröffentlichen