2016-03-30 11 views
-2

Wie soll ich eine Abfrage schreiben, die nur die inneren Spaltenwerte mit "YES" anzeigt?SQL zeigt die spezifische Spalte an

Hospital_ID MATERINITY ENT DERMATOLOGY ORTHOPEDICS 
      1 YES   NO NO   NO 
      2 YES   YES NO   NO 
      3 YES   YES NO   YES 

Das Ergebnis ich suche ist Hospital_ID "3":

Hospital_ID MATERINITY ENT ORTHOPEDICS 
      3 YES   YES YES 

, die die Spalte mit dem Wert nicht zeigen wird "NEIN".

+0

ich den imagur.com Inhalt nicht sehen kann. Was ist Ihre aktuelle Anfrage? Bitte posten Sie die Anweisung, die "SELECT ..." startet. DDL für die Tabelle (n) könnte auch hilfreich sein. – lit

+1

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –

+1

Wenn Sie möchten Um Spalten auszuschließen, müssen Sie dies in Ihrem Client tun. Es gibt keine SQL-Syntax zum Filtern von Spalten. – dnoeth

Antwort

0

Versuchen

SELECT * 
FROM TableName 
WHERE MATERINITY = "YES" AND 
     DERMATOLOGY = "YES" AND 
     ORTHOPEDICS = "YES" 
+2

'MATERINITY =" YES "' wird nicht funktionieren. "JA" ist eine Kennung (z. B. ein Spaltenname). Zeichenfolgen müssen in SQL in einfache Anführungszeichen eingeschlossen werden: ''YES'' –

+0

Dies schließt auch die Dermatologie-Spalte nicht aus. Wenn das das ist, was das OP wirklich will. –

0

Nun, wenn Sie nur nun das Dermatologie Spalte auszuschließen, wenn es NO und Sie kümmern sich nicht um eine der anderen Spalten NO zu sein (es sei denn, sie sind alle NO) dann es wäre:

SELECT Hospital_ID, MATERNITY, ENT, ORTHOPEDICS, 
FROM DepartmentTable 
WHERE DERMATOLOGY = 'NO' AND (MATERNITY = 'YES' OR ENT = 'YES' OR ORTHOPEDICS = 'YES'); 

Dies würde nur die Zeilen geben, wo DERMATOLOGIE NO ist, aber es ist eine weitere Spalte mit einem Wert ‚YES‘. Ich nehme an, Sie wollen keine Ergebnisse, bei denen alle Spalten "NEIN" sind.

0

Sie werden in Schwierigkeiten geraten, Spalten zu löschen, besonders wenn Sie mehrere Krankenhäuser einschließen. Ich würde empfehlen, die Yeses als Zeilen mit einer Union-Abfrage auszuführen, dann können Sie in Ihrem Bericht eine Kreuztabelle einfügen.

SELECT Hospital_ID, 'MATERNITY' Dept FROM myTable t WHERE t.MATERNITY='YES' 
UNION SELECT Hospital_ID, 'ENT' Dept FROM myTable t WHERE t.ENT='YES' 
UNION SELECT Hospital_ID, 'DERMATOLOGY' Dept FROM myTable t WHERE t.DERMATOLOGY='YES' 
UNION SELECT Hospital_ID, 'ORTHOPEDICS' Dept FROM myTable t WHERE t.ORTHOPEDICS='YES' 

Wenn Sie 3 filtern müssen für Krankenhaus id = dann tun:

SELECT Hospital_ID, Dept FROM (
SELECT Hospital_ID, 'MATERNITY' Dept FROM myTable t WHERE t.MATERNITY='YES' 
UNION SELECT Hospital_ID, 'ENT' Dept FROM myTable t WHERE t.ENT='YES' 
UNION SELECT Hospital_ID, 'DERMATOLOGY' Dept FROM myTable t WHERE t.DERMATOLOGY='YES' 
UNION SELECT Hospital_ID, 'ORTHOPEDICS' Dept FROM myTable t WHERE t.ORTHOPEDICS='YES') x 
WHERE Hospital_ID=3 
Verwandte Themen