我正在尝试加入两个SQL
次查询
例如
我想在没有薪水的情况下获取姓名和工资详情,然后它必须反映为“NA”
我的查询是:
select a.Empname,if((Empsalary=" "),"NA",b.salary) as salary
from
(select Empname,empcode from Table 1) as a
inner join all
(select Empcode,Empsalary from Table 2) as b
on a.empcode=b.empcode
此查询是否正确。
答案 0 :(得分:1)
select
a.Empname,
CASE
WHEN b.Empsalary = '' OR b.Empsalary IS NULL THEN 'NA'
ELSE b.Empsalary
END as salary
from Table 1 as a
inner join Table 2 as b on a.empcode = b.empcode
答案 1 :(得分:0)
你可以使用;
ISNULL(field_name, 'NA')
答案 2 :(得分:0)
Mahmoud Gamal发布的一个稍微好一点的变体是该列的LTRIM
和RTRIM
,因此如果该行有一个 space
工资栏被淘汰。 LTRIM
和RTRIM
会从字符串中删除左右白色空格。
你要用它来确保你总是比较同样的事情,因为''与''不同。
select
a.Empname,
CASE
WHEN LTRIM(RTRIMb.Empsalary)) = '' OR b.Empsalary IS NULL THEN 'NA'
ELSE b.Empsalary
END as salary
from Table 1 as a
inner join Table 2 as b on a.empcode = b.empcode
答案 3 :(得分:0)
ISNULL是一个方言特定的运营商; COALESCE是ANSI版本(工作原理相同,但可以有两个以上的参数,并返回第一个非空的参数)。
答案 4 :(得分:0)
左边连接是否合适,因为你可能有一个emp但没有条目(而不是表2中的空工资)
use foo::A;