Ich möchte nur Zeilen mit einem Wert NULL
und einem anderen Wert als NULL
für eine bestimmte Benutzername-Spalte erhalten.
Wenn beide Zeilen für diesen bestimmten Benutzernamen null haben oder beide andere Werte als null haben, sollte dies nicht in der Ausgabe erscheinen. Wenn es mehr als zwei Zeilen für denselben Benutzernamen mit null und einem anderen Wert gibt, sollten sie angezeigt werden.
Unten finden Sie ein Beispiel und eine Ausgabe. Wie geht das mit SQL Query?
+----------+-------+
| username | col2 |
+----------+-------+
| a | abc |
| a | ef |
| b | null |
| b | null |
| c | der |
| c | null |
+----------+-------+
Ausgabe
+----------+------+
| username | col2 |
+----------+------+
| c | der |
| c | null |
+----------+------+
sql-server
t-sql
IT-Forscher
quelle
quelle
d, der
und 2 mit gibtd, null
?e, one
,e, two
und zwei oder mehr mite, null
?Antworten:
Sie sollten in der Lage sein, die bedingte Aggregation zu verwenden, um den Benutzernamen sowohl mit einem Wert in
col2
als auch mit zu erhaltennull
.Ich würde vorschlagen, eine HAVING-Klausel mit den Bedingungen zu verwenden. Die Abfrage wäre ähnlich wie:
Siehe SQL Fiddle mit Demo . Diese Abfrage gruppiert Ihre Daten nach jedem Benutzernamen und überprüft dann mithilfe der bedingten Logik, ob
col2
beide gewünschten Bedingungen erfüllt sind - wobeicol2
nicht null undcol2
null ist.Sie können dies dann in einer Unterabfrage usw. verwenden, um die Werte
username
und abzurufencol2
:Siehe SQL Fiddle mit Demo .
Wenn Sie mehr als eine
col2
Zeile mit beidennull
und einem anderen Wert haben, müssen Sie dieHAVING
Klausel nur geringfügig ändern :Siehe SQL Fiddle mit Demo
quelle
HAVING
Klausel ändern , um zu sein>=1
- sqlfiddle.com/#!3/8af72/2Eine andere Lösung:
In einer ähnlichen logischen Weise:
Noch ein anderer:
quelle
Nur ein anderer Weg, es zu tun:
quelle
Dieser funktioniert auch. SQL Fiddle Demo
Ich erhalte C1 als Gesamtzahl der Zeilen für jeden Benutzernamen, C2 als Gesamtzahl der Nullzeilen für jeden Benutzernamen und vergleiche diese Werte später.
quelle
Ich würde die Unterabfrage verwenden, um folgende Benutzernamen auszuwählen:
quelle
Ich habe es mit diesem versucht ...
quelle
col2
ist nicht in der Ausgabe enthalten.