构建一个基于列中的值来提取记录的查询

时间:2013-06-21 21:29:37

标签: tsql sql-server-2000

我的表有一个父/子关系,沿着parent.id,id。还有一个包含数量的列和另一个代表祖父的ID,如下所示:

id  parent.id qty Org
1   1         1   100
2   1         0   100
3   1         4   100
4   4         1   101
5   4         2   101
6   6         1   102
7   6         0   102
8   6         1   102

这应该显示的是ID 1是父,ID 2和3是属于ID 1的子,ID 1,2和3都属于祖父母100。

我想知道是否有任何孩子或父母的QTY = 0,与该父母相关的所有其他身份是什么,以及与该祖父母相关的所有其他父母是什么?

例如,我希望看到一个向我展示的报告:

Org  id  parent.id  qty
100  1   1          1
100  2   1          0
100  3   1          4
102  6   6          1
102  7   6          0
102  8   6          1

非常感谢您可以提供任何帮助来构建MS SQL 2000(是的,我知道)查询来处理这个问题。

1 个答案:

答案 0 :(得分:0)

试试这个

select * from tablename a
where exists (select 1 from tablename x 
              where x.parent_id = a.parent_id and qty = 0)

示例:

;with cte as
( select 1 id,1 parent_id, 1 qty, 100 org
  union all select 2,1,0,100
  union all select 3,1,4,100
  union all select 4,4,1,101
  union all select 5,4,2,101
  union all select 6,6,1,102
  union all select 7,6,0,102
  union all select 8,6,1,102

)
select * from cte a
where exists (select 1 from cte x 
              where x.parent_id = a.parent_id and qty = 0)

SQL DEMO HERE