SQL Server从多个表中检索数据

奈杰尔·埃利斯(Nigel Ellis)

在SQL Server 2012中,我有两个表:

Table A
1
2
3

Table B
A
B
C
D
E
F

有没有一种简单的方法(不使用游标)来选择:

1, A
1, B
2, C
2, D
3, E
3, F
奈杰尔·埃利斯(Nigel Ellis)

另一个解决方案(不是我的,但是更好/更简单)是:

DECLARE @TotalTableA INT
SET @TotalTableA = (SELECT COUNT(Company_ID) FROM @TableA AS c)

;WITH cte1 AS (
 SELECT Company_ID, ROW_NUMBER() OVER (ORDER BY Company_ID) AS row_num
 FROM @TableA AS c
),cte2 (Person_ID, row_num) as
(
 SELECT Person_ID, (Person_ID % @TotalTableA) + 1 AS row_num
 FROM @TableB
)

SELECT Company_ID,Person_ID FROM cte1 JOIN cte2 ON cte2.row_num = cte1.row_num

这避免了计数器,并且不需要ID字段。略有不同是我的第一个想法是严格限制来自TableB的两行。此答案试图将TableB中的TableB中的所有行平均分割。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章