2014-04-14 43 views
1

我有獲取從多個表產生的查詢:選擇性填充結果列

Select 
    TA.C1 as ColumnA, TB.C1 as ColumnB, TC.C1 as ColumnC 
from 
    TableA TA, TableB TB, TableC TC 
where 
    --Business Conditions 

結果取爲如下:

enter image description here

是想要的結果在AA單獨columnD牽強,其對於ColumnA的每個對應值具有值例如:

enter image description here

PS:如果不爲空,然後ColumnB的價值優先於價值ColumnC(例如Row 4

可有人建議這將是實現這一目標的方法是什麼?

+0

[不良習慣踢:使用舊樣式的JOIN(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old -style-joins.aspx) - 舊式*逗號分隔的表*樣式列表已停用ANSI - ** 92 ** SQL標準(超過** 20年前**) –

回答

3

您可以使用合併操作符。

Select TA.C1 as ColumnA, 
     COALESCE(TB.C1, TC.C1) as ColumnB 
     from TableA TA, TableB TB, TableC TC 
0

我想,你應該在select子句中試試。

下面給出的代碼應該給出一個粗略的想法,它沒有測試。

Select TA.C1 as ColumnA, 
     case 
      when TB.C1 is not NULL THEN TB.C1 
      when TC.C1 is not NULL THEN TC.C1 
     end "Column D"