我正在匹配table1
和table2
中的数量值,这些表具有重复项和不同行数。任何数量都只能匹配一次(因此不能满足标准选择的方式),因为表中select的总量应该保持不变,就像我添加了该表中所有插入的值一样。
CREATE TABLE table1 (
table1_amount int
);
INSERT INTO table1 (table1_amount)
VALUES
(22),
(11),
(35),
(45),
(45),
(65),
(22),
(22),
(878),
(56);
CREATE TABLE table2 (
table2_amount int
);
INSERT INTO table2 (table2_amount)
VALUES
(324),
(43),
(34),
(35),
(22),
(22),
(12),
(35),
(6);
标准选择将返回匹配{{1}的三个“ 22”到table1
的两个“ 22”的6行(因此table2
的每个“ 22”都匹配两次) :
table1
现在,我只希望SELECT table1.table1_amount, table2.table2_amount
FROM table1 FULL OUTER JOIN table2 ON table1.table1_amount=table2.table2_amount;
table1_amount table2_amount
22 22
22 22
22 22
22 22
22 22
中有2个匹配项+ 1个不匹配项,所以:
table1
您该怎么做?我在这里指示使用SQL,但是任何解决方案(Excel,Access)都可以。
答案 0 :(得分:0)
尝试使用def compose[A,B,C](f: B => C, g: A => B): A => C = {f(g(_))}
:
Row_Number()
答案 1 :(得分:0)
尝试一下:
选择cte1.table1_amount,cte2.table2_amount 从(选择*,ROW_NUMBER()到(从table1_amount到table1_amount的分区)作为@ table1的排名) 在cte1.table1_amount = cte2.table2_amount和cte1.ranking = cte2.ranking
上左连接(选择*,ROW_NUMBER()超过(从@ table2按表2_amount顺序按表2_amount的分区)作为@ table2的排名)作为cte2。