我正在尝试使用其他两个创建一个新表。我想创建一个记录所有记录组合,同时合并一个'值'柱。我想要另一个列告诉我值的来源 像这样的东西。:
A:
Day Month Random1 Random2 value1
01 Jan AA XX 12
24 Mar BB YY 34
13 Feb CC ZZ 7
B:
Day Month value2
03 Jan 16
24 Mar 2
我正在尝试在日和月加入它们,但是如果没有行匹配,我希望它创建一个包含所有组合的行。
我想要一张表如下:
C:
Day Month Random1 Random2 value Type
01 Jan AA XX 12 value1
24 Mar BB YY 34 value1
13 Feb CC ZZ 7 value1
03 Jan AA XX 16 value2
03 Jan AA YY 16 value2
03 Jan AA ZZ 16 value2
03 Jan BB XX 16 value2
03 Jan BB YY 16 value2
03 Jan BB ZZ 16 value2
03 Jan CC XX 16 value2
03 Jan CC YY 16 value2
03 Jan CC ZZ 16 value2
24 Mar AA XX 2 value2
24 Mar AA YY 2 value2
24 Mar AA ZZ 2 value2
24 Mar BB XX 2 value2
24 Mar BB YY 2 value2
24 Mar BB ZZ 2 value2
24 Mar CC XX 2 value2
24 Mar CC YY 2 value2
24 Mar CC ZZ 2 value2
我的SQL查询异常复杂,并且确定有一种简单的方法可以做到这一点。
(我实际上是使用sqldf()
在R中编写此查询,我正在寻找一个sql建议,但我愿意接受替代方案。)
答案 0 :(得分:2)
好像结果集包含集合A,加上集合是Random1的唯一值,Random2和集合B的唯一值的组合。
我会用这个
SELECT Day, Month, Random1, Random2, value1, 'value1' AS type
FROM tableA
UNION
SELECT tableB.Day, tableB.Month, r1.Random1, r1.Random2, tableB.value2, 'value2'
FROM tableB
JOIN (SELECT DISTINCT Random1
FROM tableA) AS r1
JOIN (SELECT DISTINCT Random2
FROM tableA) AS r2;