2016-08-20 9 views
1

出力を生成するために使用するSQL文を知っておく必要があります。セルにNULLが含まれている場合は、その列の情報を引き出します。SQL Serverはnullを空の文字列に置き換えます。

私は3つのテーブルを持っています。テーブル1には7つのカラムがあり、テーブル2には6つのカラムがあり、テーブル3には4つのカラムが含まれています。

テーブル1から選択して1つのダッシュを選択し、別のテーブルから3つの列を選択してからダッシュし、別のテーブルの別の列を選択する必要があります。ダッシュ ' - '。

これは、これまで私が持っているコードです:

SELECT 
    Episode_Name, '-', Pnr_FName, Pnr_LName, Guest, '-', Car_Make 
FROM 
    EPISODES, PRESENTERS, CARS 

私がしようとしました:

(CASE WHEN Guest = null THEN '' 
END EPISODE) 

と私はselect声明の中で、それを結合したが、それは動作しませんでした。

助けていただけたら幸いです!おかげ

+0

[悪い習慣をキックする:古いスタイルを使用してJOINを](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old -style-joins.aspx) - 古い形式の*カンマで区切られたテーブルのリスト*スタイルは、ANSI - ** 92 ** SQL標準(* 20以上の*適切な* ANSI 'JOIN'構文で置き換えられました。年前**)、その使用は推奨されない –

答えて

0

NULLの列の値は、=演算子を使用してチェックすることはできません。これは、結果がwil私もNULLになります。代わりにIS NULLIS NOT NULLを使用してください。しかし、わかりやすくするために、CASEステートメントの代わりにCOALESCEを使用します。

使用COALESCE

SELECT CONCAT(COALESCE(Episode_Name, ' '), 
       '-', 
       COALESCE(Pnr_FName, ' '), 
       COALESCE(Pnr_LName, ' '), 
       COALESCE(Guest, ' '), 
       '-', 
       COALESCE(Car_Make, ' ')) 
FROM EPISODES, PRESENTERS, CARS 

ところで、あなたは、例えば、代わりにFROM句にコンマを使用しての明示的な結合構文を使用する必要があります

FROM EPISODES e INNER JOIN PRESENTERS p 
    ON e.col = p.col 
0

は私がしようとしました:(CASEユーザーレビュー=ヌルTHEN '' ENDのEPISODE WHEN)

はヌルが存在しているかどうかを確認するために、あなたはヌルを比較することはできません

case when guest is null then '' end 

を試してみてくださいIS NULLを使用する必要があります。

関連する問題