UNION解决不了的SQL语句,请指教!

nmd002 2008-04-18 02:17:53
在SQL2005中,使用IF NOT EXISTS语句对数据库进行检索后取得了固定定段的结果.现在想利用同样的语句取得同一表的不同检索条件下的结果,但是用UNION无法将两个结果集合并.请问有高人能指点一二吗?

========================================================================================
检索的目标只有一个表TAB1,检索的字段分别为A,B,C,D等几个字段,其中A字段是NVARCHER(5),其余均为INT型.
WHERE条件中有多个限制,可以取得的结果集记录个数,只能为零条或一条(这是由业务决定的).
例:
A B C D
3年业绩,100,200,300,...

现在,在取得结果集为零条时,希望在A字段中显示"3年业绩",在B,C,D等其后的字段内显示数值0,使其可以返回一条记录.
例:
A B C D
3年业绩,0, 0, 0,...
======================================================================================
以上内容使用IF NOT EXISTS后,已经实现效果.
现在需要将类似的多个只取得一条记录的结果集,只用一个SQL语句取出来,每个单条的WHERE条件都是不同的,可以实现吗?
...全文
60 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
nmd002 2008-04-18
非常感谢,受教了.
原来not exists可以用在WHERE里,我还以为只有IF后面可以接呢,请问有没有关于SQL2005中SELECT语句的完整语法讲解可以介绍一下?
回复
kk19840210 2008-04-18
--给你个例子 有个表#TB1 查询里面记录 如果有显示 记录如果没有显示 0,0,0

create table #tb1(a int,b int,c int)

insert into #tb1 values(1,20,30)
insert into #tb1 values(2,25,32)
insert into #tb1 values(5,15,10)


select * from #tb1 where a=1--第一条有记录显示
union all
select 0,0,0 where not exists (select * from #tb1 where a=1)
union all
select * from #tb1 where a=6--第二条没记录显示0,0,0
union all
select 0,0,0 where not exists (select * from #tb1 where a=6)
--往后以此类推

a b c
----------- ----------- -----------
1 20 30
0 0 0

(2 行受影响)
回复
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2008-04-18 02:17
社区公告
暂无公告