Ich habe eine SQL-Select-Abfrage, die verschiedene Tabellen verbindet. Das Ergebnis ist so etwas wie die erste Tabelle untenMS SQL Server wählen eindeutige Zeilen basierend auf Spaltenwert
p_id | colAprimaryEQsecondary | p_cat | colA | colB | colC
-----|------------------------|-------|------|------|------
001 | 1 | 1 | x | boo1 | flo1
001 | 1 | 2 | x | boo1 | flo1
002 | 0 | 1 | a | boo2 | flo2
002 | 0 | 2 | b | boo2 | flo2
003 | 1 | 1 | z | boo3 | flo3
003 | 1 | 2 | z | boo3 | flo3
p_id
stellt die Fremdschlüsselspalte der Datenbank. Jeder Zellenwert ist innerhalb jeder Zeile derselbe, mit entsprechenden p_id
s (p_cat
soll anders sein), außer manchmal Spalte colA
hat 2 verschiedene Werte. Spalte colAprimaryEQsecondary
enthält eine 0
oder 1
. 1
Bedeutung der colA
-Wert ist der gleiche in Zeilen mit entsprechenden p_id
.
Ich möchte ein Ergebnis wie dieses erhalten:
p_id | colAprimaryEQsecondary | p_cat | colA | colB | colC
-----|------------------------|-------|------|------|------
001 | 1 | 2 | x | boo1 | flo1
002 | 0 | 1 | a | boo2 | flo2
002 | 0 | 2 | b | boo2 | flo2
003 | 1 | 2 | z | boo3 | flo3
Deshalb möchte ich eine SQL-Abfrage erstellen, die auf dem Wert von colAprimaryEQsecondary
aussieht. Wenn der Wert 0
gleich will ich beide Zeilen erhalten, wenn der Wert 1
gleich Ich will nur die Zeile erhalten mit p_cat
gleich 2
Ich habe versucht, diese mit verschiedenen Methoden zu tun, group by
, select distinct
, select distinct on
, case
, aber Ich konnte die richtige Auswahlabfrage nicht erhalten. (Leider habe ich die ausgewählten Anweisungen gelöscht).
Wie würde ich das lösen?
Great! Funktioniert gut. Eine Frage, sagen wir mal, diejenigen, die die ursprünglichen Tabellen erstellen, waren nicht vorsichtig genug, um "colAprimaryEQsecondary" richtig zu füllen. Gibt es auch einen Weg innerhalb der Select-Abfrage, wo ich 'colA' auf Unterschiede überprüfen kann, und wenn ja, dann wähle auch diese aus? Soll ich das mit 2 SQL Abfragen innerhalb einer dritten 'where' Klausel machen? –