当前位置: 首页 > 图文教程 > 数据库 > 数据库技巧 > 一个查询的SQL语句请教,希望能够用一条SQL语句得到结果

数据库技巧
执行Insert Exec时的隐藏开销 分析
datastage server job之dsjob 命令
sql Union和Union All的使用方法
对分区表进行alter-switch时遇到的错误
sql left join 命令详解
sql 插入数据的三种常用方法及小贴士
SQL 优化经验总结34条
数据库 SQL千万级数据规模处理概要
数据库分页查询方法
postgres 数据库中的数据转换
ORACLE 系统函数大全SQLSERVER系统函数的异同
数据库 三范式最简单最易记的解释
主键与聚集索引
数据库触发器(Trigger)的一点使用心得
postgresql sql批量更新记录
sql join on 用法
SQL 按特定字段值排序
jdbc 数据库的连接(sqlserver oracle)
让你的insert操作速度增加1000倍的方法
数据库 关系连接

数据库技巧 中的 一个查询的SQL语句请教,希望能够用一条SQL语句得到结果


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 59 ::
收藏到网摘: n/a

各位老大:
我有一个查询的SQL语句请教,希望能够用一条SQL语句得到结果,问题如下:
表X:
A B C D
------------------
北京 广州 1000 10
北京 深圳 1200 20
北京 上海 500 30
北京 天津 300 40
北京 河南 800 20

表Y:
A B
----------
北京 深圳
北京 上海

表Z:
A B C D
------------------
北京 广州 200 10
北京 上海 -100 -10
北京 四川 800 50
目的:从表X中去除表Y中关键字相同的数据,再加上表Z中的数据,关键字相同的要累计(A,B为关键字)
得到如下结果:
A B C D
------------------
北京 广州 1200 20
北京 上海 400 20
北京 河南 800 20
北京 四川 800 50
复制代码 代码如下:

select a,b,sum(c) as c,sum(d) as d from
(select * from x union all select * from z ) t
where not exits (select 1 from y where y.a=t.a and y.b=t.b)
group by a,b