https://www.youtube.com/watch?v=w67I_aPKygE&list=PLavw5C92dz9Hxz0YhttDniNgKejQlPoAn&index=3

DROP TABLE IF EXISTS FOOTER;
CREATE TABLE FOOTER 
(
	id 			INT PRIMARY KEY,
	car 		VARCHAR(20), 
	length 		INT, 
	width 		INT, 
	height 		INT
);

INSERT INTO FOOTER VALUES (1, 'Hyundai Tucson', 15, 6, NULL);
INSERT INTO FOOTER VALUES (2, NULL, NULL, NULL, 20);
INSERT INTO FOOTER VALUES (3, NULL, 12, 8, 15);
INSERT INTO FOOTER VALUES (4, 'Toyota Rav4', NULL, 15, NULL);
INSERT INTO FOOTER VALUES (5, 'Kia Sportage', NULL, NULL, 18); 

SELECT * FROM FOOTER;

Pasted image 20241117160707.png

-- Approach 1
SELECT * FROM
(SELECT 
car
FROM footer
WHERE car IS NOT NULL
ORDER BY id DESC
LIMIT 1) c
CROSS JOIN
(SELECT 
length
FROM footer
WHERE length IS NOT NULL
ORDER BY id DESC
LIMIT 1
) l
CROSS JOIN 
(
SELECT 
width
FROM footer
WHERE width IS NOT NULL
ORDER BY id DESC
LIMIT 1
) w
CROSS JOIN 
(
SELECT 
height
FROM footer
WHERE car IS NOT NULL
ORDER BY id DESC
LIMIT 1
) h

Pasted image 20241117172511.png

WITH
FIRST_VALUE()

-- Approach 2
WITH CTE AS (
SELECT *,
SUM(CASE WHEN car IS NOT NULL THEN 1 ELSE 0 END) OVER(order by id) AS seq_car,
SUM(CASE WHEN length IS NOT NULL THEN 1 ELSE 0 END) OVER(order by id) AS seq_len,
SUM(CASE WHEN width IS NOT NULL THEN 1 ELSE 0 END) OVER(order by id) AS seq_wid,
SUM(CASE WHEN height IS NOT NULL THEN 1 ELSE 0 END) OVER(order by id) AS seq_hig
FROM footer
)

SELECT
FIRST_VALUE(car) OVER (PARTITION BY seq_car ORDER BY id) AS car,
FIRST_VALUE(length) OVER (PARTITION BY seq_len ORDER BY id) AS Lenth,
FIRST_VALUE(width) OVER (PARTITION BY seq_wid ORDER BY id) AS Width,
FIRST_VALUE(height) OVER (PARTITION BY seq_hig ORDER BY id) AS Height
FROM CTE
ORDER BY id DESC
LIMIT 1;