2017-11-22 6 views
0

DB2で2つのSELECT文を次のように結合する必要があります。 最初の選択が行を戻さない場合は、2番目の選択を実行します。 最初のselectが行を返す場合は、2番目の選択を実行しません。 私はselect文でそれを必要とします。関数やプロシージャではありません。 はどちらもdiffテーブルから選択します。どちらの選択も複数の列を持ちます。結果がない複数列のSQL-Select文

Select c1,c2 from table1 

Select v1,v2 from table2 

私はすべての種類の結合とケースと存在しないキーワードを試しました...しかし運はありません。 本当にありがとうございます。

答えて

0

これは動作するはずです:

IF EXISTS(SELECT c1,c2 FROM table1) 
    SELECT c1,c2 FROM table1 
ELSE 
    SELECT v1,v2 FROM table2 

を別のアプローチは、次のようになります。

SELECT c1, c2 FROM table1 WHERE EXISTS(SELECT c1, c2 FROM table1) 
UNION ALL 
SELECT v1, v2 FROM table2 WHERE NOT EXISTS(SELECT c1, c2 FROM table1) 
+0

は、この問題が解決しない、あなたのミハルをありがとうselect文の中のすべてのもの...このようなものSELECT CASE WHEN(table1からc1、c2を選択)IS NULL THEN(table2からv1、v2を選択)ELSE(Select c 1、c2 from table1) – Jad

+0

@Jad編集参照: –

+0

UNION ALLの問題は、両方のselect文が真であるときに2行になります。最初の選択がデータを返す場合は、2番目の選択を実行しません。 – Jad

0

は、この文字列で検索してください:私は必要があるため

Declare @Count int 
select @Count = Count(*) FROM table1 
if @Count > 0 
begin 
SELECT c1,c2 FROM table1 
end 
else if @Count = 0 
begin 
SELECT v1,v2 FROM table2 
end 
+0

Ramありがとう....私はplsqlなしで単一の選択が必要でした... – Jad

関連する問題