【发布时间】:2022-01-15 20:09:45
【问题描述】:
所以我有 1 个包含 3 列的数据表,1 个是参考编号,另一个是该参考的版本,第三个是属于该参考的项目。
我想要做的是显示一个显示 3 列的表格,第一列是参考编号,下一个是版本 1 上的项目列表和“最后一个最终版本”上的项目列表。
原始数据:
| refno | version | item |
|---|---|---|
| 1 | 1 | ABC123 |
| 1 | 1 | XYZ123 |
| 1 | 2 | EFG123 |
| 2 | 1 | UIO123 |
| 2 | 1 | JKL123 |
| 3 | 1 | ABC123 |
| 3 | 2 | ABC123 |
| 3 | 2 | HJF123 |
| 3 | 2 | IKJ123 |
| 3 | 2 | EEK123 |
| 3 | 2 | EEK123 |
| 4 | 1 | GFD123 |
| 4 | 1 | YUI123 |
| 4 | 2 | YUI123 |
| 5 | 1 | TYP123 |
| 6 | 1 | GHS123 |
| 7 | 1 | TEP123 |
| 7 | 1 | SLS123 |
| 7 | 2 | TEP123 |
| 7 | 2 | SLS123 |
| 7 | 2 | AEE123 |
| 7 | 3 | AAL123 |
| 7 | 4 | QEF123 |
我希望如何格式化:
| refno | Original Item | Final Item |
|---|---|---|
| 1 | ABC123 | EFG123 |
| 1 | XYZ123 | |
| 2 | UIO123 | UIO123 |
| 2 | JKL123 | JKL123 |
| 3 | ABC123 | ABC123 |
| 3 | HJF123 | |
| 3 | IKJ123 | |
| 3 | EEK123 | |
| 3 | EEK123 | |
| 4 | GFD123 | YUI123 |
| 4 | YUI123 | |
| 5 | TYP123 | TYP123 |
| 6 | GHS123 | GHS123 |
| 7 | TEP123 | QEF123 |
| 7 | SLS123 |
关于如何在 SQL(特别是 oracle SQL)中执行此操作的任何提示
【问题讨论】:
-
我们以 refno=1 为例。您是如何决定将 ABC123 与 EFG123 显示在同一行,而 XYZ123 应与
null一起出现在最后一列的?为什么不将 XYZ123 与 EFG123 和 ABC123 与null配对? -
不确定这是否重要。关键是第二列应该有最新版本的项目,不管它放在哪里。
-
“不确定”是什么意思?是你的问题,你不知道要求是什么?您是说输出中的行中原始项目和最终项目的“配对”可以是我们想要的任何东西 - 特定的初始项目和相应的特定最终项目出现在同一行的事实在您的现实生活中的问题?
-
没有配对发生,我想要一个列表在同一个表中,第 2 列只是第一个版本的项目列表,第 3 列只是最后一个版本的项目列表对于那个参考号。唯一连接第一个和最后一个版本的是 refno,而不是项目。