目标表字段为bid,asset_code,isin_code,bond_full_name 原表1的表名为dmsec,表字段为sec,type 原表2的表名为dmsecidnt,表字段为IDENTIFIER,audit_version,SECID,IDENTIFIERTYPE 需求为写出查询oracle的sql, dmsec左连接dmsecidnt,连表条件为dmsec.sec = dmsecidnt.SECID, dmsec.sec映射到目标表的asset_code, 查出dmsecidnt.IDENTIFIERTYPE='ISIN'并且audit_version最大时的IDENTIFIER映射到isin_code, 查出dmsecidnt.IDENTIFIERTYPE='LNGNM'并且audit_version最大时的IDENTIFIER映射到bond_full_name, bid赋值uuid
时间: 2024-03-21 11:38:42 浏览: 66
以下是查询oracle的sql语句:
```
SELECT
SYS_GUID() AS bid,
dmsec.asset_code,
MAX(CASE WHEN dmsecidnt.IDENTIFIERTYPE='ISIN' THEN dmsecidnt.IDENTIFIER END) AS isin_code,
MAX(CASE WHEN dmsecidnt.IDENTIFIERTYPE='LNGNM' THEN dmsecidnt.IDENTIFIER END) AS bond_full_name
FROM
dmsec
LEFT JOIN
dmsecidnt ON dmsec.sec = dmsecidnt.SECID
WHERE
dmsecidnt.IDENTIFIERTYPE IN ('ISIN', 'LNGNM')
GROUP BY
dmsec.asset_code;
```
解析:
1. 通过 `SYS_GUID()` 函数生成一个唯一标识符,赋值给 `bid` 字段。
2. 使用 `LEFT JOIN` 连接 `dmsec` 和 `dmsecidnt` 表,并根据 `dmsec.sec = dmsecidnt.SECID` 进行关联。
3. 使用 `MAX()` 函数获取 `dmsecidnt.IDENTIFIER` 的最大值,同时使用 `CASE` 语句进行条件判断,将 `dmsecidnt.IDENTIFIER` 映射到 `isin_code` 或 `bond_full_name` 字段。
4. 使用 `GROUP BY` 对 `dmsec.asset_code` 进行分组,保证查询结果按照 `asset_code` 去重。
阅读全文