繁体   English   中英

SQL Server:连接所有左表并右重复

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM