SQL質疑応答スレ 9問目

このエントリーをはてなブックマークに追加
777NAME IS NULL
【質問テンプレ】
・SQLServer 2005(spなし)
・A, B, C, D・・・列があり、全て文字型(レコードは数値のみ)。
A, Bがプライマリーキー
・以下の条件を満たすA, Bの値
Cが'04', '08', '09'のいずれかの行の中で、
Dの値が最小のレコードのA, Bの組み合わせのうち、
Bの値が最小のレコードすべてのA, B
・説明
自分でsqlを作成すると、同じSELECT文が何度も出てきてしまいます。
もっと重複のない文にできないのでしょうか?
select A, MIN(B) as B from
(
(select A, B, D from foo where C in ('04', '08', '09')) T1
inner join
(
select A, MIN(D) as D from foo where C in ('04', '08', '09')
group by A
) T2
on T2.A = T1.A and T2.D = T1.D
) T0
group by A