2016-06-22 10 views
0

私は3つのカラムを持つテーブルを持っています。 IN句でそのテーブルを照会します。 COLUMN2によってCOLUMN1における(1,2,3)順TABLE1からローが見つからない場合はNULLを返します。IN句のあるOr​​acleクエリー

選択COLUMN1、COLUMN3

TABLE1は、カラム1内の1及び2値含ま。私は私の結果でも利用できない値を返そうとしており、それは一番下にソートされるべきです。

例えばデータ

カラム1、カラム2カラム3

1 100 11 

2 101 50 

出力、使用できない値が最後でなければなりません。

COLUMN1カラム2カラム3

1 100 11 

2 101 50 

3 null null 

私は選択NVLように、NVLとサブクエリと試みた(..(選択中の(1,2,3))、NULL)に起因IN句に、デュアルから、私は単列サブクエリが期待される複数の行の問題を返すようになっています。

また、ユニオンで試してみましたが、何も動作しません。助けがあれば大丈夫。おかげ

+0

使用デコード機能や私たちはあなたを助けるでしょう私達にあなたのクエリを示しています。 – Prathyush

+0

@Prathyush私もデコードしようとしましたが、テーブルにない値は無視されます。 ここでcol1 = 2であるcol1 = 2のテーブル1からcol1、decode(col1、NULL、 'zero'、col1)を選択し、col1は(1,2,3) – Venkat

+0

ここでcol1とは何ですか?それは主キーですか? – Prathyush

答えて

0

あなたはあなたが試すことができます別のテーブルから1,2,3の値取ることができない場合は、次の

with t1 as (
    select col1,col2,col3 
    from tab1 
    where cod_flusso in ('1','2','3')), 
t2 as (
    select '1' as col1,null,null 
    from dual 
    union 
    select '2',null,null 
    from dual 
    union 
    select '3',null,null 
    from dual) 
select t2.col1,col2,col3 
from t2 
left outer join t1 
on t1.col1= t2.col1 

を2番目のテーブルに1,2,3の値を保存することができればそれは良いでしょう、そして、左外部結合を使用します。

+0

あなたは値をハードコードしていますIN句の値を動的に渡します。 2番目のテーブルは不可能です。すべての値は単一のテーブルにあります – Venkat

+0

あなたは正しいです!この理由から、私は2番目のテーブルを使用することをお勧めします...あなたは私に論理的にIN句の値を抽出するために使用されるロジックを説明できますか? –

0

私はあなたがすべての労働組合でそれを行うことができると思います。

select column1 from table1 where column1 in (1,2,3) order by column2, column3 
union all 
select null from table1 where column1 not in (1,2,3) order by column2, column3 
関連する問題