重复信息中case when exists 的应用...
来源:互联网 发布:js ajax java实例 编辑:程序博客网 时间:2024/04/28 19:01
重复信息中case when exists 的应用
create table #a(Fname varchar(30),fqun decimal(18,2),fclass int )
create table #b ( fclass int,name varchar(30))
insert into #a
select 'a',20,1
union all
select 'a',20,2
union all
select 'a',20,3
union all
select 'B',10,1
union all
select 'B',10,2
insert into #b
select 1,'A'
union
select 2,'B'
union
select 3,'C'
select a.*,b.name from #a a inner join #b b on a.fclass = b.fclass
要求输出格式为
Fname fqun fclass name
------------------------------ -------------------- ----------- ------------------------------
a 20.00 1 A
2 B
3 C
B 10.00 1 A
2 B
-解决-
create table #a(Fname varchar(30),fqun decimal(18,2),fclass int )
create table #b ( fclass int,name varchar(30))
insert into #a
select 'a',20,1
union all
select 'a',20,2
union all
select 'a',20,3
union all
select 'B',10,1
union all
select 'B',10,2
insert into #b
select 1,'A'
union
select 2,'B'
union
select 3,'C'
---select a.*,b.name from #a a inner join #b b on a.fclass = b.fclass
select Fnane=(case when exists (select 1 from #a where a.fname = fname and fclass<a.fclass) then '' else a.fname end)
,fqun=(case when exists (select 1 from #a where a.fqun = fqun and fclass<a.fclass) then '' else ltrim(a.fqun) end)
,a.fclass
,b.name
from #a a
inner join #b b
on a.fclass =b.fclass
order by a.Fname,a.fclass
drop table #a,#b
--------------------------
a 20.00 1 A
2 B
3 C
B 10.00 1 A
2 B
这里需要注意的就是case when exists(select 1 from #a …..
这里的是一个嵌套查询,需要处理的字段里层与外层sql 相等,然后再加一条件,不处理的条件做大小比较。根据 大于 或 小于 可以控制为相同记录的第一条记录,或最后一条记录
如果外层 小于 里层,就是第一条,反之,就是最后一条。
例子:
declare @t table(F1 varchar(8),F2 varchar(8))
insert into @t values('01','a ')
insert into @t values('01','aa ')
insert into @t values('02','b ')
insert into @t values('02','bb ')
insert into @t values('02','bbb')
--select * from @t
select F1=(Case when exists (select 1 from @t where F1=a.F1 and F2<a.F2) then '' else F1 end)
,a.F2
from @t a
order by a..F1,a.F2
--Result--
------------
01 a
aa
02 b
bb
bbb
- 重复信息中case when exists 的应用...
- oracle case when exists()
- sybase中应用case when
- Oracle-Sql 语句中 Case When 的应用
- postgreSQL 应用case when的例子
- mysql中的case when的应用
- SQL Server中 Case When 函数 与 Access中 IIF 函数的应用
- oracle数据库中 case when的用法
- Oracle中CASE WHEN的用法实例
- Access中替代case when的方法
- sql中 case when 的用法
- mysql 中case when 的用法
- oracle中case when的使用
- SQLServer 中Case When的用法
- 关于sqlserver中 case when的用法
- SQLServer 中Case When的用法
- SQLServer 中Case When的用法
- Oracle中CASE WHEN的用法实例
- java关键字Transient
- Windows远程桌面
- 程序代码语法加亮插件比较
- 莲花--安妮宝贝
- 什么是贾金斯式的人物
- 重复信息中case when exists 的应用...
- 女人与程序的对应关系!
- 用Live Writer找回你的BLOG的密码
- 网络程序服务端设计二
- VC实现工具栏的下拉箭头按钮
- Linux 编程之C与脚本的混合编程
- 十大开源软件
- Interlocked API的原子性如何保证
- 网络服务端设计三