求一个sql语句?请各位帮忙
表结构:
subid subname paretnid
1001 现金科目 1001
10010 人民币 1001
1002 银行存款 1002
如果subid 和 parentid 相同则是一级科目反之是二级科目。
现在的问题是如何把所有的两级科目和没有两级科目的一级科目列出来。
------解决方案--------------------select
t.*
from
表 t
where
t.paretnid! = t.subid
or
not exists(select 1 from 表 where paretnid=t.subid and paretnid!=subid)
------解决方案----------------------产生测试数据
declare @t table(subid varchar(100), subname varchar(100), parentid varchar(100))
insert into @t select '1001 ', '现金科目 ', '1001 '
union all select '10010 ', '人民币 ' , '1001 '
union all select '1002 ' , '银行存款 ', '1002 '
--解决方法
select * from @t a
where subid <> parentid
or subid=parentid
and not exists(select * from @t b
where b.subid <> b.parentid and a.subid=b.parentid)