何塞。
我是SQL的新手,我面临着一个很容易解决的问题:
目前我的视图是这样的:
另一种选择是CROSS JOIN
引起重复和派生数字…
SELECT
src.Credittype,
src.Person,
num.Number
FROM
table src
CROSS JOIN
(
SELECT 1 AS Number
UNION ALL SELECT 2 AS Number
UNION ALL SELECT 3 AS Number
)
num
SELECT
src.Credittype,
src.Person,
num.Number
FROM
table src
CROSS JOIN
(
VALUES (1), (2), (3)
)
num(Number)
在SO上也有许多答案,显示了生成大范围数字的表(或内联视图)的方法。比如…
- 如何生成两个数字之间的数字范围?
这里有一个解决方案:
Declare @creditTypes Table (CreditType varchar(10), Person varchar(100));
Insert Into @creditTypes (CreditType, Person)
Values ('type 1', 'James')
, ('Type 2', 'Jose')
, ('Type 2', 'Mike');
With t(n)
As (
Select t.n
From (Values (0), (0), (0), (0), (0), (0), (0), (0), (0), (0)) As t(n)
)
, iTally (Number)
As (
Select Top (50)
checksum(row_number() over(Order By @@spid))
From t t1, t t2 -- 100 rows
)
Select *
From @creditTypes ct
Cross Apply iTally it
Order By
Person
, Number;