0

SecurityとCallPutの2つのテーブルがあります。Security(table1)にはsecurity_idとmaturity_date(nol以外の値)が含まれ、CallPut(table2)にはsecurity_idとOdate(日時形式の値を含むnull以外の値)が含まれます。 maturity_dateセキュリティIDがCallput(table2)に存在し、セキュリティテーブルと一致するmaturity_dateの代わりにodate列の値が必要です

例:セキュリティ(表1)

Security_id|Maturity_date
abcd        25Jan2020
bcde        25jan2021 

Callput(tabble2)

Security_id|Odate
abcd        25Jan2015 

必要な出力

Security_id|Maturity_date
abcd        25Jan2015 (since here id is there in callput it takes odate)
bcde        25jan2021 (since here id is not there in callput it takes maturity date)

私はoraclesqlを使用しています。助けてください。前もって感謝します

4

3 に答える 3

1
select 
    s.Security_id,
    NVL(c.Odate, s.Maturity_date) Maturity_date
from 
    security s left join callput c 
    on (c.security_id = s.security_id);
于 2013-03-16T19:38:28.550 に答える
0
select s.* from security as s left join callput as c on (c.security_id = s.security_id);

テストされていませんが、結合を使用します。結合の詳細については、http://docs.oracle.com/cd/B28359_01/server.111/b28286/queries006.htmにあるOracleの広範なドキュメントを参照してください。

于 2013-03-16T19:28:39.837 に答える
0
select s.Security_id, nvl(c.odate, s.Maturity_date) as Maturity_date
from Security s
left join
Callput c
on
s.Security_id = c.Security_id

psは、それがOracleの質問であることに気づきました。私のコードは、MS SQL Server
EDIT用です:Oracle構文用に修正されています。

于 2013-03-16T19:28:49.083 に答える