質問: データがあれば○○なければのsql 基本的なことなのかもしれませんが・・・ aとbというテーブルがあり、あるタイミングでaを元にbを作成します。つまりbはデータがある場合とない場合があります。また、2つは関連番号で紐づいています。 aテーブルを抽出したい時に、抽出条件は以下です。 ・bテーブルのステータスが1であれば抽出 ・bテーブルのステータスが0であれば非抽出 ・bテーブルにデータがなければ抽出 inner joinだとデータがない時に抽出できないし、 where句にcase句を入れればいいのかなと思いましたが、テーブルにデータがあればなんて条件書けないしで詰まりました。 selectした結果に対して条件つけて抽出する手も思いつきましたが もっと美しいsqlがあれば教えてもらえないでしょうか。 環境はsqlserverです。よろしくお願いします。
回答: aが bが id name id stat 1 abc 1 0 2 def 3 1 3 xyz のときに id name stat 2 null null 3 xyz 1 とするのでしょうか? そうするなら、inner joinでaとbを結合して、 それをleft joinすればいけそうです。 select a.id, c.data, c.stat from a left join ( select data, a.id id, stat from a inner join b on a.id=b.id ) c on a.id=c.id where c.stat=1 or c.stat is null