2016-09-16 35 views
0

在一個表,我需要以檢索3列:如果一個欄爲空,則在SQL Server中使用的另一列獲取數據

OrderNumber, ParentOrderNumber, ClientName 

ParentOrderNumber總會有CLIENTNAME
但有些ORDERNUMBER不會有CLIENTNAME,

在這種情況下,我需要從ParentOrderNumber獲取ClientName。

能否請你幫我用SQL查詢

enter image description here

附上數據情景的圖片。 這裏沒有可用於ETA-454-5687的客戶名稱,因此我需要使用同一張表中的parentOrderNumber(TOR-096-2000)來獲取它。

+0

。 –

回答

0
select 
ParentOrderNumber, 
clientname, 
case when OrderNumber is null or len(OrderNumber)=0 then clientname else OrderNumber end as OrderNumber 
from yourtable 
1

使用COALESCE這是一個CASE表達式速記:

COALESCE(expression1, expression2, ..., expressionN)

速記
CASE 
WHEN (expression1 IS NOT NULL) THEN expression1 
WHEN (expression2 IS NOT NULL) THEN expression2 
... 
ELSE expressionN 
END 

因此你可以使用

SELECT ParentOrderNumber, 
     clientname, 
     COALESCE(OrderNumber, ParentOrderNumber) as OrderNumber 
FROM MyTable 
+0

它是否適用於空字符串?他的問題是關於空字符串我想 –

0

這可以用一個case語句

它執行基本的對錯風格邏輯,然後允許執行的操作來實現。

Select 
    ClientName 
, ParentOrderNumber 
, CASE WHEN [OrderNumber] IS NULL THEN ParentOrderNumber ELSE OrderNumber END AS [OrderNumber] 
FROM 
    tbl_Table 
0

我認爲我們需要從您的表中獲得更多信息。 你有這樣的事嗎?

OrderNumber|ParentOrderNumber|ClientName 
1|NULL|nameOfTheClient 
2|1|NULL 

然後你需要當你說一欄爲空,你的意思是一個空字符串(「」)或空加入你的表

select a.OrderNumber, a.ParentOrderNumber, ISNULL(a.ClientName,b.ClientName) 
from yourTable a 
left join yourTable b on b.OrderNumber = a.ParentOrderNumber 
+0

HAVE編輯我的問題。 –

相關問題