1

次の 2 つのテーブルがあります: table1with fields c1and dt(nullable); table2フィールドstart_dtend_dtおよびwk_id. ここで、 と の間で左外部結合を実行して、table1との間にあるものtable2を取得する必要があります。次の条件を適用しましたが、プルされるべきではないものもあれば、いくつかの行が繰り返されます。wk_iddtstart_dtend_dtwk_idNULLNULL

where nvl(t1.dt,'x') between nvl(t2.start_dt(+), 'x') and nvl(t2.end_dt(+), 'x');

条件のどこが悪いのですか?

4

2 に答える 2

1
select *
from table1 t1
left join table2 t2
    on t1.dt between t2.start_dt and t2.end_dt

新しいANSI結合構文を試すことをお勧めします。

また、'x'例として使用していますか?または、dt列は実際に文字列として格納されていますか?

于 2012-08-31T05:53:10.233 に答える
0

「 table1 left outer join table2 on table1.some_field = table2.some_field」の部分が欠落しているようです

このようなもの:

select t1.c1, t1.dt, t2.start_dt, t2.end_dt, t2.wk_id
from table1 t1 left outer join table2 t2
on t1.some_field1 = t2.some_field1
where nvl(t1.dt,'x') 
between nvl(t2.start_dt, 'x') and 
nvl(t2.end_dt, 'x')
于 2012-08-31T04:22:30.003 に答える