私がテーブルを持っているとしましょうTableA
:
parent_id int
this_id int
filter int
this_date date
そしていくつかのサンプルデータ:
parent_id = 1, this_id = 1, filter = 1, this_date = ...
parent_id = 1, this_id = 2, filter = 0, this_date = ...
parent_id = 1, this_id = 3, filter = 1, this_date = ...
parent_id = 4, this_id = 4, filter = 0, this_date = ...
parent_id = 4, this_id = 5, filter = 0, this_date = ...
parent_id = 4, this_id = 6, filter = 1, this_date = ...
parent_id = null, this_id = 7, filter = 0, this_date = ...
parent_id = null, this_id = 8, filter = 1, this_date = ...
parent_id
は常に子の1つと同じですthis_id
。子がない場合parent_id
はnull
テーブルは変更できません、それが私たちが持っているものです。
要約を表示するビューを作成しました。
SELECT ISNULL(parent_id,this_id) id, COUNT(*) numparts, MAX(this_date)...
FROM TableA
GROUP BY ISNULL(parent_id,this_id)
サマリービューに、を含むパーツの数を追加したいと思いますfilter=1
。
したがって、この例の結果は(私が実行した場合SELECT * FROM theview
)次のようになります。
id numparts dt numOfFilter1
1 3 ... 2
4 3 ... 1
7 1 ... 0
8 1 ... 1
実際には、私のフィルター列はサブクエリになりますが、このビットを並べ替えると、そのビットを理解できると思います。