Ein ziemlich kniffliges Szenario. Ich habe einen Tisch wie unten. Grundsätzlich möchte ich alle Kombinationen von Bereichen von jedem RangeSet in SQL Server 2012 abrufen.SQL Jede Kombination von IDs
Am besten zeige ich ein Beispiel für Struktur und gewünschte Ausgabe. Das Problem ist, die Anzahl der RangeSetID des dynamisch sein kann und die Anzahl der RangeID des in jedem Bereich eingestellt
RangeID RangeSetID
------------------
1 4
2 4
3 4
4 4
5 2
6 2
7 2
8 2
9 2
10 2
11 1
12 1
13 1
14 1
15 1
16 1
17 3
18 3
19 3
20 3
ich die Ausgabe muß dynamisch sein, um rekursiv die folgenden Datensatz von Raten zu erstellen:
1 5 11 17 (first from range4, first from range2, first from range1, first from range3)
1 5 11 18 (first from range4, first from range2, first from range1, second from range3)
1 5 11 19 (first from range4, first from range2, first from range1, third from range3)
1 5 11 20 (first from range4, first from range2, first from range1, fourth from range3)
1 5 12 17 (first from range4, first from range2, second from range1, first from range3)
1 5 12 18 (first from range4, first from range2, second from range1, second from range3)
1 5 12 19
1 5 12 20
Und so weiter, bis ich die letzte RangeID von jedem RangeSetID und führen in
4 10 16 20 (last from range4, last from range2, last from range1, last from range3)
erreichen, die letztlich in der Folge wird unter dem RateID 1 ist das erste Ergebnis vertica zeigt ly, um die dynamische Anzahl der RangeSetIDs
RateID RangeID
------------------
1 1
1 5
1 11
1 17
2 1
2 5
2 11
2 18
zu berücksichtigen. Dies sollte zu 11.000 Zeilen (ca.) führen. Ich habe versucht, CROSS JOIN usw., aber ich kann das überhaupt nicht funktionieren.
Irgendwelche Genies da draußen bitte?
Dank
Es würde helfen, wenn Sie erklären, wie Sie bekam '1 5 11 17' –
die Zahl ** n ** - Anzahl der Spalten in Ergebnismenge ist gleich Anzahl der unterschiedlichen 'RangeSetID', so dass die allgemeine Idee sein sollte: get ** n ** Alias-Tabellen als' select rangeID aus der Tabelle - group by RangeSetID where row_number = 1 ... n; ', dann cross join ** n ** tables, Holen Sie Spalten in jeder Tabelle zur Ergebnismenge. Problem ist, wie man ** n ** bekommt und dynamisch benutzt. –
Aktualisiert als Bearbeitung. Mein Problem ist die RangeSet sind dynamisch und die Anzahl der RangeIDs in der RangeSet ist auch dynamisch – CR41G14