日期:2014-05-18  浏览次数:20471 次

又是查询!
SQL code
create table ta(
月份 int,
编码 int,
工资 int
)
insert ta select 1,2113,900
union all select 2,2113,780

create table tb(
编码 int,
月份 int,
奖金 int
)
insert tb select 2113,1,200
union all select 2113,2,100

怎么得到
月份    编码    工资    奖金
 1     2113   900    200
 2     2113   780    100


我写的不行.
select a.*,奖金=case when a.月份=(select b.月份 from ta b where b.编码=a.编码 and b.月份=a.月份) then 奖金 else 0 end from ta a join tb b on a.编码=b.编码


------解决方案--------------------
SQL code
create table ta(
月份 int,
编码 int,
工资 int
)
insert ta select 1,2113,900
union all select 2,2113,780

create table tb(
编码 int,
月份 int,
奖金 int
)
insert tb select 2113,1,200
union all select 2113,2,100

select ta.*, tb.奖金 from ta,tb where ta.月份 = tb.月份 and ta.编码 = tb.编码

/*
月份          编码          工资          奖金          
----------- ----------- ----------- ----------- 
1           2113        900         200
2           2113        780         100

(所影响的行数为 2 行)
*/
drop table ta,tb
我的异常网推荐解决方案:软件开发者薪资,http://www.aiyiweb.com/other/1391128.html