与过滤器交叉加入?

时间:2013-10-07 07:26:43

标签: sql sql-server

我需要让Sp将学生分发到他们的部分 该过程采用2个字符串参数StuID和SecID

以防我将'1,2,3,4,5'作为StuID发送,'a,b'作为SecID发送 我正在使用拆分功能,它可以很好地返回表格

Tb1 |   Tb2
1   |    a
2   |    b
3   |
4   |  
5   |

我怎样才能得到以下结果

1 a
2 b
3 a
4 b
5 a
....

我试图通过交叉连接来做,但它没有显示我想要的结果

 select US.vItem as UserID,SE.vItem as Section 
from split(@pUserID,',') us 
cross join split(@pSectionID,',') se

1 个答案:

答案 0 :(得分:1)

Cross join并不意味着像那样工作。

这会给你你想要的结果,但这是一个躲闪。

select t1.vItem, t2.VItem from
    ( select *, ROW_NUMBER() over (order by vItem) r from US ) t1
        inner join
    ( select *, ROW_NUMBER() over  (order by vItem desc) -1 r from SE ) t2
        on t2.r = t1.r % (select COUNT(*) from SE)
order by t1.vItem