2012-04-23 54 views
0

我與SQL Server 2005 我有3臺如何在一個colume基於布爾字段中取出兩個列值

產品

PId | PName 

服務工作

SId | SName 

Bill

BId | TypeId | IsService 

TypeId是PId或SId。基於IsService字段。

如果IsService是1,那麼TYPEID是希德如果IsService爲0,則TYPEID是PID

我想和比爾那麼,如何可以獲取PNAME和SNAME?

我正在考慮爲此編寫存儲過程。 和將動態列添加到存儲Procudure列包含根據IsService的SName或PName。

但是不知道該怎麼寫呢?

回答

2

也許是這樣的:

SELECT 
    Bill.*, 
    CASE 
     WHEN Bill.IsService=1 
     THEN Service.SName 
     ELSE Product.PName 
    END AS Name 
FROM 
    Bill 
    LEFT JOIN Service 
     ON Bill.TypeId=Service.SId 
    LEFT JOIN Product 
     ON Product.TypeId=Bill.BId 
+0

是它爲我工作。謝謝 – Smily 2012-04-23 10:06:29

+0

沒問題... @Archana:記得投票答案你認爲是好的。這給了我們一種溫暖的模糊感覺:P – Arion 2012-04-23 10:15:04

0
SELECT 
    t.BId, 
    tt.Name 
FROM Bill t 
Outer Apply 
(
    SELECT PName AS name FROM Product WHERE 0 = t.IsService AND PId = t.TypeId 
    UNION ALL 
    SELECT SName AS name FROM Servicess WHERE 1 = t.IsService AND SId = t.TypeId 
) tt 
相關問題