在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
另一个解决方案(不是我的,但是更好/更简单)是:
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] 删除。
我来说两句