Ich habe eine Union von zwei Tabellen und ich zähle die Anzahl der Zeilen in der Union. Ich muss das mehrmals machen, wobei einer der beiden Tische gleich bleibt, aber der andere sich ändert.Erstellen einer Schleife mit einer Union von zwei Tabellen, von denen eine nicht ändert
Um genauer zu sein, nehmen Sie die Mock Abfrage unten als ein Beispiel, die erste Tabelle (über UNION
) bleibt unverändert, aber die Bedingung in der 2. Tabelle wird für jede Iteration der Schleife, die ich gerne haben würde. Zum Beispiel e.YearsOfEmployment > 1 AND e.YearsOfEmployment <= 2
für die nächste Iteration der Schleife und e.YearsOfEmployment > 2 AND e.YearsOfEmployment <= 3
für die nächste.
Ich frage mich, ob eine Schleife für das, was ich tun möchte, möglich ist. Wenn es so ist, würde jeder Ratschlag, wie man es konstruiert, sehr geschätzt. Entscheidend ist, ob es möglich ist, die Schleife so zu konstruieren, dass die erste Tabelle nicht für jede Iteration abgefragt werden muss, da sie gleich bleibt.
SELECT COUNT(*)
FROM (
SELECT e.EmployeeID
FROM HumanResources.Employee AS e
JOIN Sales.SalesPerson AS s
ON e.FullName = s.FullName
UNION
SELECT e.EmployeeID
FROM HumanResources.Employee AS e
WHERE e.YearsOfEmployment > 0 AND e.YearsOfEmployment <= 1
) AS temp
EDIT: Hier ist eine Beschreibung dessen, was ich zu erreichen versuche: Ich für die Anzahl der Einzelstücke aussehen wollen, dass (mindestens) eines der beiden Kriterien erfüllen. Das erste Kriterium ändert sich nicht (wie in der ersten Tabelle), und das zweite Kriterium ist, ob ein Element innerhalb eines Bereichs punktet. Der gesamte Bereich von Scores ist 0 - 100, und ich würde gerne Elemente zwischen jedem 5-Punkt-Inkrement finden, zB zwischen 0 und 5, zwischen 5 und 10 und zwischen 10 und 15 ... also das Ergebnis, das ich möchte zu erreichen, ist so etwas wie unten:
# of items fulfilling criterion 1 or score between 0 and 5
# of items fulfilling criterion 1 or score between 5 and 10
# of items fulfilling criterion 1 or score between 10 and 15
# of items fulfilling criterion 1 or score between 15 and 20
.
.
.
# of items fulfilling criterion 1 or score between 95 and 100
"Erstellen Sie eine Schleife" ist nur * sehr sehr selten * die richtige Lösung für ein SQL-Problem. Können Sie bitte einen Schritt zurücktreten und Ihr Problem erklären? Es ist fast sicher eine Set-basierte Lösung. – Blorgbeard
Bitte geben Sie Beispieldaten und erwartete Ergebnisse an. Sollte keine Schleifen verwenden müssen btw ... – sgeddes
Überschneiden sich Ihre Kriterien absichtlich? jemand mit 5 Punkten wird in zwei Gruppen gezählt. Wenn sie sich nicht überlappen sollen, können Sie eine GROUP BY verwenden, um zu bekommen, was Sie wollen. Keine Schleifen. Lassen Sie SQL Server nur sorgen, wenn Sie Ihre feste Tabelle zwischenspeichern. –