【发布时间】:2022-01-18 14:46:06
【问题描述】:
我在一个表中有与物料交易相关的数据,与物料相关的日志历史标题数据在另一个表中,详细的日志历史数据在第三个表中。我正在尝试获取与材料表匹配的不同状态更新日期,但我得到一个材料交易的重复行
原物料交易表:
| ORDER_NO | MATERIAL | QTY |
|---|---|---|
| 0001 | MAT01 | 2 |
| 0002 | MAT02 | 5 |
Original Log History Header 事务表:
| ORDER_NO | LOG_ID |
|---|---|
| 0001 | 1001 |
| 0001 | 1002 |
状态代码 1 表示已打开,代码 2 表示已关闭
详细的日志历史表:
| LOG_ID | STATUS_CODE | DATE |
|---|---|---|
| 1001 | 1 | 11/12/2021 |
| 1002 | 2 | 15/12/2021 |
使用以下 SQL 查询:
SELECT
TO_CHAR (m.order_no) order_no,
m.material,
a.date opened_date,
ab.closed_date
FROM MATERIAL_TRANSACTIONS m
INNER JOIN HISTORY_LOG t
ON m.ORDER_NO = t.ORDER_NO
INNER JOIN HISTORY_LOG_DETAILED a
ON t.LOG_ID = a.LOG_ID
AND a.STATUS_CODE = '1'
INNER JOIN HISTORY_LOG_DETAILED ab
ON t.LOG_ID = ab.LOG_ID
AND ab.STATUS_CODE = '2'
我得到以下结果:
| ORDER_NO | MATERIAL | QTY | OPENED_DATE | CLOSED_DATE |
|---|---|---|---|---|
| 0001 | MAT01 | 2 | 11/12/2021 | |
| 0001 | MAT01 | 2 | 15/12/2021 |
我想将状态日期与下面的同一行:
| ORDER_NO | MATERIAL | QTY | OPENED_DATE | CLOSED_DATE |
|---|---|---|---|---|
| 0001 | MAT01 | 2 | 11/12/2021 | 15/12/2021 |
如果已经有类似问题的主题,我将不胜感激,并且非常抱歉。
【问题讨论】: