1

我正在尝试加入两个SQL查询

例如

  • Table1 有 Empname ,Empcode
  • 表 2 有 Empname、Empcode、Empsalary

我试图在没有薪水的地方获取姓名和薪水详细信息,然后它必须反映为“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

此查询是否正确。

4

5 回答 5

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
于 2013-05-21T10:31:22.103 回答
0

您可以使用;

ISNULL(field_name, 'NA')
于 2013-05-21T10:31:30.327 回答
0

Mahmoud Gamal 发布的一个稍微好一点的变体是在列上带有LTRIMRTRIM的这一行,因此如果该行在space薪水列中有一个,则将其删除。LTRIMRTRIM从字符串中删除左右空格。

你会用它来确保你总是比较相同的东西,因为''与''不同。

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
于 2013-05-21T11:19:33.507 回答
0

ISNULL 是特定方言的运算符;COALESCE 是 ANSI 版本(工作方式相同,但可以有两个以上的参数并返回第一个不为空的参数)。

于 2013-05-21T11:52:59.957 回答
0

考虑到您可能有一个 emp 但没有条目(而不仅仅是表 2 中的空薪水),左连接是否合适

SELECT t1.Empname, t1. Empcode, COALESCE(t2.Empsalary, 'NA')
FROM Table1 t1 LEFT JOIN Table2 t2 
  ON t1.EmpCode = t2.EmpCode
于 2015-06-05T15:26:43.623 回答