急请教一个SQL查询语句!(100)

  • 主题发起人 主题发起人 qdzb
  • 开始时间 开始时间
Q

qdzb

Unregistered / Unconfirmed
GUEST, unregistred user!
有一表T,结构和内容如下:DWDBM(单位) BH(编号) CFBH(拆分编号) JE(金额)A 1 1000B 1 4000B 0 1 1000B 0 1 3000第二行被第三行,和第四行给拆分了。现在想得到:各单位如果有拆分编号的按拆分的明细显示,不显示被拆分那一行。即:A 1 1000B 0 1 1000B 0 1 3000第二行不显示,因为第二行编号被3,4行拆分了。麻烦大家了,谢谢!
 
select dwdbm,bh,cfbh,jefrom t where cfbh<>1 and dwdbm not in (select distinct dwdbm from t where cfbh=1)unionselect dwdbm,bh,cfbh,jefrom twhere cfbh=1
 
select * from t a where a.cfbh is null and a.bh not in (select distinct cfbh from t b where b.cfbh is not null and b.dwdbm = a.dwdbm)union allselect * from twhere cfbh is not null
 
select * from T awhere (not exists(select 1 from T b where a.DWDBM=b.DWDBM and b.BH='0')) or BH = '0'
 
楼上的exists效率很高 不过网上说外连接速度更快select A1.* from T A1 left join on (select * from T where BH = 1) A2on A1.DWDBM = A2.DWDBM Where A2.JE IS NULL or A1.BH = 1
 
题外话:楼主的数据库不够规范,如果规范的话,没这问题。当然如果你是为别人打补钉,那难为你了。
 
后退
顶部