![](/img/trans.png)
[英]SQL Server: join two tables where left table contains all rows of right table in each of its identifier
[英]SQL Server : join all left table and repeat right
我必须以以下方式联接表:
表A:
1
2
3
4
5
表B:
A
B
结果表应为:
1 A
2 B
3 A
4 B
5 A
您有任何想法如何做到这一点?
假设最坏的情况,表A中的列不是没有间隙的序列,并且表B中的行数事先未知,则必须在两个表上都应用ROW_NUMBER,然后在MODULO上进行连接:
SELECT col1, col2
FROM
(
SELECT col1,
ROW_NUMBER() OVER (ORDER BY col1) -1 AS rn
FROM tableA
) AS A
JOIN
(
SELECT col2,
ROW_NUMBER() OVER (ORDER BY col2) -1 AS rn
FROM tableB
) AS B
ON A.rn % (SELECT COUNT(*) FROM tableB) = B.rn
也许是这样的:
select A.nr, case when (A.nr%2=0) then b2.chr else b3.chr end letter
from A, B b2, B b3
where b2.chr = 'A' and b3.chr = 'B'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.