ich eine Datenbanktabelle "table_name1" in SQL Server 2012 habe, und ich bin mit SQL Server Management Studio Version 10.Wie SQL-Abfrage ausführen, um Daten aus einer der drei Spalten zu ziehen?
Daten in der Tabelle wie folgt aussehen:
colpkey col1 col2 col3
1234 AB1234 AB1234
1265 BS5379 BS5379 BS5379
2323 WE7865 WE7865 WE7865
3267 WB7690 WB7690
6543 NULL DH6583
8798 NULL
9403 BF6543 NULL
9856 BH7548 BH7548 BH7548
Die Abfrage ich diese Tabelle erstellen Beispieltabelle:
Ich möchte eine Abfrage schreiben, so dass es zwei Spalten ziehen sollte, "Colpkey" und "Col". Das "col" sollte einen Wert von "col1" haben. Wenn "col1" NULL oder leer ist, sollte es einen Wert von "col2" erhalten. Wenn "col2" NULL oder leer ist, sollte es einen Wert von "col3" erhalten. Und wenn alle "col1", "col2" und "col3" entweder leer oder NULL sind, dann sollte der Wert "col" leer sein ('').
Also für die gegebene Probe „table_name1“ die Abfrage sollte Daten wie ziehen:
colpkey col
1234 AB1234
1265 BS5379
2323 WE7865
3267 WB7690
6543 DH6583
8798
9403 BF6543
9856 BH7548
Wie kann ich Abfrage schreiben, dies zu tun? Ich habe versucht, CASE zu verwenden und kam mit folgenden Abfrage nach oben:
select colpkey,
Case WHEN (col1 != null and col1!= '') then col1
ELSE
(CASE WHEN (col2 != null and col2!= '') then col2
ELSE
(CASE WHEN (col3 != null and col3!= '') then col3
ELSE '' END) END) END as col
from table_name1;
Aber es zeigt leere für jede Zeile, wie:
colpkey col
1234
1265
2323
3267
6543
8798
9403
9856
Bitte legen nahe, wo ich mit der Abfrage werde falsch?
Sie sind schneller;) –
@AlexKudryashev GMTA. –
Danke Tim für deinen Vorschlag. Es gibt mir das Ergebnis, nach dem ich gesucht habe. Also habe ich deine Antwort akzeptiert. – 300