1

SQL2 つのクエリを結合しようとしています

例えば

  • Table1 には Empname 、Empcode があります
  • Table2 には 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

従業員はいるがエントリがない可能性がある場合 (表 2 の NULL 給与ではなく)、適切な左結合です。

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 に答える
0

使用できます。

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

ISNULL は方言固有の演算子です。COALESCE は ANSI バージョンです (同じように機能しますが、3 つ以上のパラメーターを持つことができ、null でない最初のパラメーターを返します)。

于 2013-05-21T11:52:59.957 に答える