加入匹配记录并在不匹配时创建组合
Join on matching records and create combinations when no match
我正在尝试使用另外两个创建一个新的 table。我想在合并 'value' 列时创建记录所有记录组合。我想要另一列告诉我价值来自哪里
像这样。:
甲:
Day Month Random1 Random2 value1
01 Jan AA XX 12
24 Mar BB YY 34
13 Feb CC ZZ 7
乙:
Day Month value2
03 Jan 16
24 Mar 2
我想在日和月加入他们,但是如果没有行匹配,我希望它创建一个包含所有组合的行。
我想要一个table如下:
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 建议,但我愿意接受替代方案。)
看起来好像结果集包括集合 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;
我正在尝试使用另外两个创建一个新的 table。我想在合并 'value' 列时创建记录所有记录组合。我想要另一列告诉我价值来自哪里 像这样。:
甲:
Day Month Random1 Random2 value1
01 Jan AA XX 12
24 Mar BB YY 34
13 Feb CC ZZ 7
乙:
Day Month value2
03 Jan 16
24 Mar 2
我想在日和月加入他们,但是如果没有行匹配,我希望它创建一个包含所有组合的行。
我想要一个table如下:
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 建议,但我愿意接受替代方案。)
看起来好像结果集包括集合 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;