我有一张各个国家的年度数据表。
并非所有国家/地区的数据年数都相同。
如果没有国家/年对的行,则表示该值为0。
我正在尝试建立一个查询,该查询将使用JOIN
添加年份,而0
用于尚不存在的行。
当前代码:
CREATE TABLE years SELECT DISTINCT acq_year FROM final_data;
SELECT * FROM final_data CROSS JOIN years;
答案 0 :(得分:1)
我假设您的年度数据表的名称为 final_data ,其列为 country , acq_year 和 data :
CREATE TEMPORARY TABLE years SELECT DISTINCT acq_year FROM final_data;
CREATE TEMPORARY TABLE countries_years
SELECT fd1.country, fd1.acq_year FROM
(SELECT DISTINCT country, years.acq_year FROM final_data join years) fd1
LEFT JOIN final_data fd2 ON fd1.country = fd2.country AND fd1.acq_year = fd2.acq_year
WHERE fd2.acq_year IS null;
INSERT INTO final_data(country, acq_year, data)
SELECT country, acq_year, 0 FROM countries_years;