add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE likes (
"item_no" INTEGER,
"like_date" DATE
)
INSERT INTO likes VALUES
(95057, '2022-08-12'),
(95057, '2022-08-12'),
(95057, '2022-08-12'),
(95057, '2022-09-18'),
(95057, '2022-09-18'),
(95057, '2022-09-23'),
(95057, '2022-10-05'),
(95057, '2022-10-06')
8 rows affected
CREATE TABLE collection (
"item_no" INTEGER NOT NULL, -- Add FK constraint if you wish
"collection_type" VARCHAR(10) NOT NULL,
"placement_date" DATE NOT NULL,
PRIMARY KEY("item_no", "placement_date")
)
CREATE VIEW collection_scd2 AS
SELECT
*,
COALESCE(
DATEADD(
DD,
-1,
LEAD(placement_date) OVER (PARTITION BY item_no ORDER BY placement_date ASC)
),
GETDATE()
) AS "valid_to"
FROM collection
INSERT INTO collection VALUES
(95057, 'AB', '2022-05-01'),
(95057, 'FR', '2022-06-02'),
(95057, 'GT', '2022-07-03'),
(95057, 'HJ', '2022-08-04'),
(95057, 'JU', '2022-08-09'),
(95057, 'NH', '2022-08-11'),
(95057, 'BG', '2022-08-22'),
(95057, 'VF', '2022-09-01'),
(95057, 'CD', '2022-09-05'),
(95057, 'XS', '2022-09-14'),
(95057, 'AZ', '2022-09-15'),
(95057, 'PL', '2022-10-01'),
(95057, 'OK', '2022-10-11'),
(95057, 'IJ', '2022-10-02')
14 rows affected
SELECT
likes.item_no,
likes.like_date,
coll.collection_type,
coll.placement_date
FROM likes
JOIN collection_scd2 AS coll
ON likes.item_no = coll.item_no
AND likes.like_date BETWEEN coll.placement_date AND coll.valid_to
item_no like_date collection_type placement_date
95057 2022-08-12 NH 2022-08-11
95057 2022-08-12 NH 2022-08-11
95057 2022-08-12 NH 2022-08-11
95057 2022-09-18 AZ 2022-09-15
95057 2022-09-18 AZ 2022-09-15
95057 2022-09-23 AZ 2022-09-15
95057 2022-10-05 IJ 2022-10-02
95057 2022-10-06 IJ 2022-10-02