Zum ersten Mal lange Zeit anonymer Benutzer.Geschachtelte SQL-Anweisung, die zu unerwarteten Ergebnissen führt
Ich versuche, Registrierungsinformationen basierend auf der Ebene Menschen gehören zu ziehen. Leute in Level 00 könnten in eine von zwei Registrierungen passen, also versuche ich eine verschachtelte Case-Anweisung zu machen. Da die Aussage steht, habe ich ziemlich viele Leute, die in beiden Ergebnissen der verschachtelten Fallaussage auftauchen. Alle anderen Ebenen funktionieren gut. Hat jemand irgendwelche Ideen, warum ein Ergebnis sowohl in der When und Else-Anweisung angezeigt wird, oder gibt es eine geeignetere Möglichkeit, dies anstelle von verschachtelten CASE-Anweisungen zu programmieren?
CASE
WHEN B.Level = '00'
THEN
CASE
WHEN C.SCREEN = '100' and C.FIELD_NUMBER = '65' and C.FIELD_VALUE = 'Y' THEN CONCAT(B.Location, ':', B.Level, ':', 'H')
ELSE CONCAT(B.Location, ':', B.Level, ':','A')
END
WHEN B.Level in ('A', 'B', 'C', 'D', 'E') THEN CONCAT(B.Location, ':', 'A-E')
WHEN B.Level in ('F', 'G', 'H') THEN CONCAT(B.Location, ':', 'F-H')
WHEN B.Level = 'I' THEN CONCAT(B.Location, ':', 'I')
WHEN B.Level = 'J' THEN CONCAT(B.Location, ':', 'J')
WHEN B.Level = 'K' THEN CONCAT(B.Location, ':', 'K')
ELSE CONCAT(':', B.Location, B.Level)
END AS Registration,
Aktuelle Ergebnisse für eine Person mit einem Niveau von 00, die die Kriterien des mit dem Schirm trifft = 100, field_number = 65 und Feld _Value = Y in Duplikaten wie führen würde:
- Person X Location1: Ebene 1: H
- Person X Location1: Ebene 1: A
Wenn Person X erfüllt, dass die Kriterien, dann sollten sie das zweite Ergebnis haben nicht zeigt, oder zumindest, dass die Ergebnis, das ich anstrebe.
In Bezug auf die Join, zieht es einen Wert zurück pro "Person"? – JohnHC
Bearbeiten Sie Ihre Frage und liefern Sie Beispieldaten und gewünschte Ergebnisse. In einem "case" -Ausdruck wird genau eine "then" -Klausel zurückgegeben. –