Skip to content

Commit 1931604

Browse files
committed
Merging Two Rows in SQL
1 parent 5dfbc03 commit 1931604

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
WITH MergedStudent AS (
2+
SELECT
3+
2017 AS id,
4+
COALESCE(MAX(name), MIN(name)) AS name,
5+
COALESCE(MAX(national_id), MIN(national_id)) AS national_id,
6+
COALESCE(MAX(birth_date), MIN(birth_date)) AS birth_date,
7+
COALESCE(MAX(enrollment_date), MIN(enrollment_date)) AS enrollment_date,
8+
COALESCE(MAX(graduation_date), MIN(graduation_date)) AS graduation_date,
9+
COALESCE(MAX(gpa), MIN(gpa)) AS gpa
10+
FROM
11+
(SELECT * FROM Student WHERE id = 2017
12+
UNION ALL
13+
SELECT * FROM Student WHERE id = 2008) s
14+
)
15+
SELECT * FROM MergedStudent;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
SELECT * FROM Student WHERE id IN (1011, 1610);
2+
3+
UPDATE Student AS target
4+
SET name = COALESCE(target.name, source.name),
5+
national_id = COALESCE(target.national_id, source.national_id),
6+
birth_date = COALESCE(target.birth_date, source.birth_date),
7+
enrollment_date = COALESCE(target.enrollment_date, source.enrollment_date),
8+
graduation_date = COALESCE(target.graduation_date, source.graduation_date),
9+
gpa = COALESCE(target.gpa, source.gpa)
10+
FROM Student AS source
11+
WHERE target.id = 1011 AND source.id = 1610;
12+
13+
DELETE FROM Student WHERE id = 1610;
14+
15+
SELECT * FROM Student WHERE id IN (1011);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
INSERT INTO Student (id, name, national_id, birth_date, enrollment_date, graduation_date, gpa)
2+
SELECT
3+
1000,
4+
COALESCE(s1.name, s2.name),
5+
COALESCE(s1.national_id, s2.national_id),
6+
COALESCE(s1.birth_date, s2.birth_date),
7+
COALESCE(s1.enrollment_date, s2.enrollment_date),
8+
COALESCE(s1.graduation_date, s2.graduation_date),
9+
COALESCE(s1.gpa, s2.gpa)
10+
FROM
11+
(SELECT * FROM Student WHERE id = 1717) s1,
12+
(SELECT * FROM Student WHERE id = 1719) s2;
13+
14+
DELETE FROM Student WHERE id IN (1717, 1719);
15+
16+
SELECT * FROM Student WHERE id = 1000;

0 commit comments

Comments
 (0)