让我们坐在我有一个表 'A' 与行:简化的交叉连接?
A
B
C
D
有一个简单的方法做一个交叉连接创建
A 1
A 2
A 3
A 4
...
D 1
D 2
D 3
D 4
,而无需创建第二个表?
喜欢的东西:
SELECT *
FROM A
CROSS JOIN (1,2,3,4)
让我们坐在我有一个表 'A' 与行:简化的交叉连接?
A
B
C
D
有一个简单的方法做一个交叉连接创建
A 1
A 2
A 3
A 4
...
D 1
D 2
D 3
D 4
,而无需创建第二个表?
喜欢的东西:
SELECT *
FROM A
CROSS JOIN (1,2,3,4)
这样的事情应该工作,我想
select * from A cross join (select 1 union all select 2 union all select 3 union all select 4) as tmp
您将创建第二个表,但你不会坚持它。
你应该能够做到这一点通过
select * from A cross join
(select 1
union all
select 2
union all
select 3
union all
select 4)
下面会为任何规模的一个工作表中(虽然我只测试了其对6行)。它使用SQL Server 2005中可用的排名函数,但这个想法应该适用于任何RDBMS。
SELECT ta.SomeColumn, cj.Ranking
from TableA ta
cross join (select row_number() over (order by SomeColumn) Ranking from TableA) cj
order by ta.SomeColumn, cj.Ranking