日期:2014-05-17  浏览次数:20872 次

求一条sql,请帮看看!
有表如下:
  姓名       性别         职称           工资总额    
  a             男           高职                 3000
  b             男           中职                 2000
  c             女           初职                 1500
  d             女           初初职             900
 
我想(通过一条sql)得到如下视图;
  姓名       性别         职称           工资总额       变动后的工资  
  a             男           高职                 3050             3250
  e             男           高职                 3000             3200
  b             男           中职                 2000             2150
  c             女           初职                 1500             2060
  d             女           初初职               900             955
 
条件是这样的
男性(+100),女性(+50)
高职(+100),中职(+50),初职(+10),初初职(+5);
不知用一条sql可否实现?谢谢


------解决方案--------------------
CREATE TABLE TABLE1(NAME VARCHAR2(10),SEX VARCHAR2(4),JOB VARCHAR2(10),SAL INTEGER);
INSERT INTO TABLE1 VALUES( 'a ', '男 ', '高职 ',3000);
INSERT INTO TABLE1 VALUES( 'b ', '男 ', '中职 ',2000);
INSERT INTO TABLE1 VALUES( 'c ', '女 ', '初职 ',1500);
INSERT INTO TABLE1 VALUES( 'd ', '女 ', '初初职 ',900);
COMMIT;

SELECT NAME,SEX,JOB,SAL,
DECODE(JOB, '高职 ',SAL_NEW+100, '中职 ',SAL_NEW+50, '初职 ',SAL_NEW+10, '初初职 ',SAL_NEW+5)SAL_NEW FROM
(SELECT NAME,SEX,JOB,SAL,DECODE(SEX, '男 ',SAL+100,SAL+50) SAL_NEW FROM TABLE1);

NAME SEX JOB SAL SAL_NEW
---------- ---- ---------- ---------- ----------
a 男 高职 3000 3200
b 男 中职 2000 2150
c 女 初职 1500 1560
d 女 初初职 900 955

创建试图的话就
CREATE VIEW VIEW_NAME AS
SELECT NAME,SEX,JOB,SAL,
DECODE(JOB, '高职 ',SAL_NEW+100, '中职 ',SAL_NEW+50, '初职 ',SAL_NEW+10, '初初职 ',SAL_NEW+5)SAL_NEW FROM
(SELECT NAME,SEX,JOB,SAL,DECODE(SEX, '男 ',SAL+100,SAL+50) SAL_NEW FROM TABLE1);
------解决方案--------------------
SQL> select tt.name,tt.sex,tt.zicheng,tt.money,
2 case when tt.zicheng = 'gaozhi ' then decode(tt.sex, 'male ',tt.money+100, 'female ',tt.mo