SQLの窓 イラストAC フリー素材

2016年11月16日

select 社員コード,氏名,(select count(*) from 得意先マスタ where 担当者 = 社員コード) as 件数 from 社員マスタ : 件数を where で使いたい場合

改めて書くと以下の SQL ですが、欲しい結果は『得意先担当を持たない社員の一覧』です。ですが、このままでは得意先担当を持つ社員も表示されるので、件数が 0 の行を取り出したいわけです。
select
	社員コード,
	氏名,
	(select count(*) from 得意先マスタ where 担当者 = 社員コード) as 件数
from 社員マスタ

しかし、この SQL の最後に where 件数 = 0 とは書けないので、この内容を view にしてしまえばいいわけです。ただ、実際問題 view を定義しなくとも、from に このクエリを書けば解決します。
( Oracle で言うところのインラインビュー / 今でもそう言うのだろうか? )

select * from 

(select 社員コード,氏名,(select count(*) from 得意先マスタ where 担当者 = 社員コード) as 件数

from 社員マスタ) as 別名

where 件数 = 0
ここで注意なのは、SQLServer では別名が必要なところ、Oracle では別名は省略できるはずです。

ちょっと確認したのが古いのですが、こちらが他の RDBMS を含めた情報です。



posted by at 2016-11-16 22:17 | DB関連 | このブログの読者になる | 更新情報をチェックする