2016-05-16 9 views
0

私は、表tab1を持っていると言うことができます非空のテーブルから値を選択し、データは次のとおりです。空のテーブルを無視し

col1 col2 col3 

col1 col2 col3 
20 15 2016-04-04 00:00:00.000 
25 25 2016-03-03 00:00:00.000 
14 14 2016-03-03 22:22:22.223 
54 34 2016-04-04 21:22:33.333 

他の表tab2が空のテーブルです

私が望むのは、常にtab2から値を収集する必要があり、tab2が空の場合、tab1に移動してそこから値を収集するということです。

カラムがnullの場合はCOALESCEを使用できます。しかし、それは空の列を返します。これは私が(私は、大きなデータセットを持っていると仮定して)しようとしたものです:

select coalesce(tab2.col2, tab1.col2) ab 
from tab2, tab1 

答えて

2

これに伴う問題:

select coalesce(tab2.col2, tab1.col2) ab 
from tab2, tab1 

が合体されていません。それは結合です。むしろ参加の欠如。

あなたが適切のようにテーブルを結合する必要があります:それはcol1値をtab2にnull以外を探しますときcol2にあなたcoalesce()ここで私はそう、Col1に参加し

select coalesce(tab2.col2, tab1.col2) ab 
from tab1 LEFT OUTER JOIN tab2 ON tab1.col1 = tab2.col1 

、およびNULLの場合は、同じcol1値の場合col2値をtab1から取得します。

+0

また、ISNULLを使用することもできます。この場合、 'COALESCE' .... ISNULL(tab2.col2、tab1.col2)'とまったく同じように機能するはずです。読むのが少し楽になりました。 – BenM

+0

パーフェクト。それについては決して考えなかった。ありがとう! – Norm

関連する問題