2013-05-21 50 views
1
更換空間

我試圖連接兩個SQL查詢SQL加入並與NA

例如

  • 表1有Empname,Empcode
  • 表2有Empname,Empcode,Empsalary

我想獲得名稱和工資細節,只要沒有工資,那麼它必須反映爲「不適用」

我的查詢是:

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 

這是查詢正確的。

回答

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 
0

你可以使用;

ISNULL(field_name, 'NA') 
+0

我想..它的'NVL()'函數 – Ravi

+0

當你使用oracle然後是的,它是nvl() – rcpayan

0

一個稍微好一點的東西馬哈茂德·賈邁勒發佈變種這一項與列LTRIMRTRIM,所以如果行salary列有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 
0

ISNULL是一個特定於方言的操作符; COALESCE是ANSI版本(工作原理相同,但可以有兩個以上的參數,並返回非空的第一個參數)。

0

是左加入適當的給你可能有一個EMP但沒有條目(而非表2只是一個空的薪水)

SELECT t1.Empname, t1. Empcode, COALESCE(t2.Empsalary, 'NA') 
FROM Table1 t1 LEFT JOIN Table2 t2 
    ON t1.EmpCode = t2.EmpCode