Учитывая этот набор данных, каждый запас имеет ежегодный снимок стоимости.
+----+------+------+-------+-------+
| ID | Name | Year | Stock | Value |
+----+------+------+-------+-------+
| 1 | John | 2019 | ABC | 123 |
| 1 | John | 2020 | ABC | 123 |
| 1 | John | 2021 | ABC | 123 |
| 1 | John | 2021 | XYZ | 200 |
| 1 | John | 2022 | ABC | 123 |
| 1 | John | 2022 | XYZ | 200 |
| 1 | John | 2023 | ABC | 630 |
| 1 | John | 2023 | XYZ | 200 |
+----+------+------+-------+-------+
В 2019 году Джон держит только AB C со значением 123
В 2020 году Джон также держит только AB C со значением 123 (не имеет изменено)
В 2021 году Джон держит AB C, но также приобрел XYZ со значением 200
в 2022 году, Джон держит AB C и XYZ, оба значения не изменились.
В 2023 году Джон держит AB C и XYZ, при этом значение AB C увеличивается до 630, а значение XYZ остается на 200.
Я бы хотел возвращать строки, чтобы
- В год, если ничего из портфеля Джона не изменилось С ПОСЛЕДНЕГО ГОДА, строки не возвращаются
- Если что-то в портфеле Джона изменилось С ПОСЛЕДНЕГО ГОДА все его текущие авуары перечислены
Например,
+----+------+------+-------+-------+
| ID | Name | Year | Stock | Value |
+----+------+------+-------+-------+
| 1 | John | 2019 | ABC | 123 |
| 1 | John | 2021 | ABC | 123 |
| 1 | John | 2021 | XYZ | 200 |
| 1 | John | 2023 | ABC | 630 |
| 1 | John | 2023 | XYZ | 200 |
+----+------+------+-------+-------+
Как мне это сделать, будь то через функции в PL / SQL или в чистом SQL?