[英]SQL Joining and Replacing spaces with NA
我正在尝试加入两个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
此查询正确吗?
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
您可以使用;
ISNULL(field_name, 'NA')
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
ISNULL是方言特定的运算符; COALESCE是ANSI版本(工作原理相同,但可以有两个以上参数,并且返回第一个不为null的参数)。
给定左联接是否合适,因为您可能有一个emp,但是没有任何条目(而不是表2中的零薪水)
SELECT t1.Empname, t1. Empcode, COALESCE(t2.Empsalary, 'NA')
FROM Table1 t1 LEFT JOIN Table2 t2
ON t1.EmpCode = t2.EmpCode
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.