繁体   English   中英

从单列中的值影响多列的条件中选择多行语句

[英]Select statement with multiple rows from condition on values in single column affecting more than one column

我有下表。使用薪水作为条件,我想获得多行。 下面是当前表,称为employee。

   empid |    name    |     salary
-----------------------------------
1   A1        alex        20000
2   B2        ben         4500
3   C1        carl        14000

将薪水与某些固定值进行比较,每当薪水大于固定值时,就会在输出中显示一条记录。还输出一个计算出的税额列。以下离我的最终结果更近了一步

select e.*,tax= (case when salary<6000 then tax=0.06 *salary,when salary between 6000 and 18000 then tax= 0.06 *(salary -6000),else tax =0 ),m.incometype,
from employee e
left join 
( 
 select 0 as threshold, 101 as incometype
 union
 select 5999 as threshold, 102 as incometype
 union
 select 17999 as threshold, 103 as incometype
) m
on e.salary > m.threshold
order by e.empid

期望的输出将是:

   empid |    name |  salary | incometype | tax
----------------------------------------------
1   A1        alex    20000    101       360
2   A1        alex    20000    102       720 
3   A!        alex    20000    103       0 
4   B2        ben     4500     101       270
5   C1        carl    14000    101       360
6   C1        carl    14000    102       480

对于单列值条件中具有多行的Select语句,这是一个进一步的问题

这可能对您有帮助

select e.*,
case 
when salary<6000 then (0.06*salary) 
when salary between 6000 and 1800 then (0.06*(salary -6000))
when m.incometype=103 then 0 
end as tax
,m.incometype,
from employee e
left join 
( 
 select 0 as threshold, 101 as incometype
 union
 select 5999 as threshold, 102 as incometype
 union
 select 17999 as threshold, 103 as incometype
) m
on e.salary > m.threshold
order by e.empid

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM