Files
email-tracker/external/duckdb/test/sql/merge/merge_into_subquery.test
2025-10-24 19:21:19 -05:00

46 lines
1.1 KiB
SQL

# name: test/sql/merge/merge_into_subquery.test
# description: Test MERGE INTO with subqueries
# group: [merge]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE Totals(item_id int, balance int);
statement ok
CREATE TABLE Buy(item_id int, volume int);
statement ok
INSERT INTO Buy values(10, 1000), (30, 300), (20, 2000);
query I
MERGE INTO Totals USING (VALUES (10), (30)) Updates(item_id) ON Totals.item_id = Updates.item_id
WHEN MATCHED THEN UPDATE SET balance = (SELECT SUM(volume) FROM Buy WHERE item_id=Totals.item_id)
WHEN NOT MATCHED THEN INSERT VALUES (Updates.item_id, (SELECT SUM(volume) FROM Buy WHERE item_id=Updates.item_id));
----
2
query II
FROM Totals ORDER BY ALL
----
10 1000
30 300
statement ok
INSERT INTO Buy values(10, 2000)
query I
MERGE INTO Totals USING (VALUES (10), (20)) Updates(item_id) ON Totals.item_id = Updates.item_id
WHEN MATCHED THEN UPDATE SET balance = (SELECT SUM(volume) FROM Buy WHERE item_id=Totals.item_id)
WHEN NOT MATCHED THEN INSERT VALUES (Updates.item_id, (SELECT SUM(volume) FROM Buy WHERE item_id=Updates.item_id));
----
2
query II
FROM Totals ORDER BY ALL
----
10 3000
20 2000
30 300