求一个sql语句?请各位帮忙

songxing 2007-05-16 09:29:25
表结构:
subid subname paretnid
1001 现金科目 1001
10010 人民币 1001
1002 银行存款 1002

如果subid 和 parentid 相同则是一级科目反之是二级科目。
现在的问题是如何把所有的两级科目和没有两级科目的一级科目列出来。
...全文
141 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
songxing 2007-05-16
  • 打赏
  • 举报
回复
多谢andy1995
songxing 2007-05-16
  • 打赏
  • 举报
回复
多谢libin_ftsafe(子陌红尘)
拓狼 2007-05-16
  • 打赏
  • 举报
回复
--产生测试数据
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)
子陌红尘 2007-05-16
  • 打赏
  • 举报
回复
declare @t table(subid int,subname varchar(10),paretnid int)
insert into @t select 1001 ,'现金科目',1001
insert into @t select 10010,'人民币 ',1001
insert into @t select 1002 ,'银行存款',1002

select
t.*
from
@t t
where
t.paretnid! = t.subid
or
not exists(select 1 from @t where paretnid=t.subid and paretnid!=subid)

/*
subid subname paretnid
----------- ---------- -----------
10010 人民币 1001
1002 银行存款 1002
*/
子陌红尘 2007-05-16
  • 打赏
  • 举报
回复
select
t.*
from
表 t
where
t.paretnid! = t.subid
or
not exists(select 1 from 表 where paretnid=t.subid and paretnid!=subid)

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧