下表包括非唯一身份证,金钱价值和日期/时间。
id_1 value_1 value_time id_version Version_time
138 250 09-SEP-14 595 02-SEP-14
140 250 15-SEP-14 695 01-AUG-14
140 300 30-DEC-14 720 05-NOV-14
233 250 01-JUN-15 800 16-MAY-15
正如您可以看到id_1,id_version和时间列可以在表格中更改,但value_1可能会保持不变。
我知道如果id_1在行中相同,则value_1只能根据id_version进行更改。但是表中的id_version太多了。我知道它会根据id_version而改变,但我不知道它的确切更改时间。
首先,我必须决定,id_version和id_version时间会导致id_1更改值。
但是id_1并不是唯一的,而且id可能会改变,但值保持不变:)
编辑:来自OP的评论 - 开始
这是我想要获得第一行和第二行而不是第三行和第四行的期望结果示例。
| 140 | 250 | 15-SEP-14 | 695 | 01-AUG-14 |
| 140 | 300 | 31-DEC-14 | 725 | 07-NOV-14 |
| 140 | 300 | 05-JAN-14 | 740 | 30-NOV-14 |
| 140 | 300 | 30-DEC-14 | 720 | 05-NOV-14 |
编辑:来自OP的评论 - 结束
在这种情况下,提前感谢您真的需要帮助。
答案 0 :(得分:1)
根据目前为止给出的输入(并且仅处理链接到图片中的数据 - 而不是当前示例数据中的数据),以下内容应该有助于您入门:
SELECT
TMin.id_1
, TMin.value_1
, TO_CHAR(TAll.value_time, 'DD-MON-RR') value_time
, TMin.id_version
, TO_CHAR(TMin.version_time, 'DD-MON-RR') version_time
FROM
(SELECT
id_1
, value_1
, MIN(id_version) id_version
, MIN(version_time) version_time
FROM T
GROUP BY id_1, value_1
ORDER BY id_1, value_1
) TMin
JOIN T TAll
ON TMin.id_1 = TAll.id_1
AND TMin.value_1 = TAll.value_1
AND TMin.id_version = TAll.id_version
AND TMin.version_time = TAll.version_time
ORDER BY TMin.id_1, TMin.value_1
;
查看实际操作:SQL Fiddle 如果需要调整/进一步详细说明,请发表评论。