CREATE TABLE Price_Table_2020
(
product Nvarchar(50),
price INTEGER,
product_description Nvarchar(12)
);
INSERT INTO Price_Table_2020
(product, price, product_description)
VALUES
('ball', '100', 'plastic ball'),
('ink', '80', 'ink for pen'),
('pen', '1000', 'pen'),
('bucket', '200', 'bucket');
CREATE TABLE Price_Table_2019
(
product VARCHAR(6),
price INTEGER,
product_description VARCHAR(12)
);
INSERT INTO Price_Table_2019
(product, price, product_description)
VALUES
('ball', '90', 'plastic ball'),
('ink', '70', 'ink for pen'),
('pen', '900', 'pen'),
('bucket', '100', 'bucket');
CREATE TABLE Price_Table_2018
(
product VARCHAR(6),
price INTEGER,
product_description VARCHAR(12)
);
INSERT INTO Price_Table_2018
(product, price, product_description)
VALUES
('ball', '80', 'plastic ball'),
('ink', '60', 'ink for pen'),
('pen', '800', 'pen'),
('bucket', '300', 'bucket');
CREATE TABLE Product
(
product VARCHAR(4),
invoice_year INTEGER
);
INSERT INTO Product
(product, invoice_year)
VALUES
('pen', '2019'),
('ball', '2020'),
('ink', '2020');
SELECT pr.product,
pr.invoice_year,
pc.price
FROM product
pr
JOIN (
SELECT *, 2020 AS year
FROM price_table_2020
UNION ALL
SELECT *, 2019
FROM price_table_2019
UNION ALL
SELECT *, 2018
FROM price_table_2018
) pc ON pc.product = pr.product
AND pc.year = pr.invoice_year
ORDER BY pr.invoice_year, pr.product
product Nvarchar(50),
price INTEGER,
product_description Nvarchar(12)
);
INSERT INTO Price_Table_2020
VALUES
('ball', '100', 'plastic ball'),
('ink', '80', 'ink for pen'),
('pen', '1000', 'pen'),
('bucket', '200', 'bucket');
CREATE TABLE Price_Table_2019
product VARCHAR(6),
price INTEGER,
product_description VARCHAR(12)
);
INSERT INTO Price_Table_2019
VALUES
('ball', '90', 'plastic ball'),
('ink', '70', 'ink for pen'),
('pen', '900', 'pen'),
('bucket', '100', 'bucket');
CREATE TABLE Price_Table_2018
product VARCHAR(6),
price INTEGER,
product_description VARCHAR(12)
);
INSERT INTO Price_Table_2018
VALUES
('ball', '80', 'plastic ball'),
('ink', '60', 'ink for pen'),
('pen', '800', 'pen'),
('bucket', '300', 'bucket');
CREATE TABLE Product
product VARCHAR(4),
invoice_year INTEGER
);
INSERT INTO Product
VALUES
('pen', '2019'),
('ball', '2020'),
('ink', '2020');
SELECT pr.product,
pr.invoice_year,
pc.price
SELECT *, 2020 AS year
FROM price_table_2020
SELECT *, 2019
SELECT *, 2018
--Alternately
SELECT p.*, coalesce(p2018.price, p2019.price, p2020.price) AS invoice_price
SELECT p.*, p2018.price, p2019.price, p2020.price
Select * FROM Product
--Or
--Restructuring Your Tables to put all the price data in one table, adding a year column to that table to indicate which year the price is applicable to.
SELECT pr.product,
pr.invoice_year,
pc.price
No comments:
Post a Comment