日期:2014-05-19  浏览次数:20550 次

求一个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)