2016-03-30 11 views
-2

"YES"の列の値のみを表示するクエリを作成する方法を教えてください。特定の列を表示しているSQL

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

私が探している結果がHospital_ID "3" である:

Hospital_ID MATERINITY ENT ORTHOPEDICS 
      3 YES   YES YES 

"NO" の値を持つ列が表示されません。

+0

私はimagur.comのコンテンツを見ることができません。あなたの現在の質問は何ですか? "SELECT ..."を開始するステートメントを投稿してください。表のDDLも役立ちます。 – 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

クライアントで行う必要がある列を除外するには、列をフィルターするSQL構文はありません。 – dnoeth

答えて

0

あなただけそれはNOだと(彼らはすべてNOでない限り)あなたはNOであること、他の列のいずれかを気にしないとき皮膚科列を除外するために探しているならば、まあ

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

'MATERINITY =" YES "'は動作しません。 '' YES ''は識別子(例えば列名)です。文字列をSQLで単一引用符で囲む必要があります。 '' YES '' –

+0

これは皮膚科の列を除外しません。それがOPが本当に望んでいるものなら。 –

0

をお試しください

これは、DERMATOLOGYがNOである行だけを提供しますが、「YES」値を持つ別の列があります。私は、すべての列が「いいえ」である結果を望んでいないと仮定しています。

0

特に複数の病院を含む場合は、列を削除しようとすると困ってしまいます。ユニオンクエリでyessesを行として実行することをお勧めします。次に、レポートでクロス集計を行うことができます。

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' 

あなたは病院のID = 3のためにフィルタリングする必要がある場合は、その後の操作を行います。

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 
関連する問題