0

我的表具有父/子关系,沿 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,与该父母相关联的所有其他 id 是什么,与该祖父母相关联的所有其他父母是什么?

例如,我希望看到一份报告显示以下内容:

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(是的,我知道)查询来处理这个问题。

4

1 回答 1

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 演示在这里

于 2013-06-21T21:43:24.050 回答