我需要帮助sql查询根据属性值
动态地将单个记录转换为多个数据如下所示
A B C
0 100 10
输出应为,D列基于B / C,即10次迭代。迭代次数不固定,可以是任意数字,因此根据B和C的值,输出可以是3行,10行,100或1000或10000。
A B C D
0 100 10 10
0 100 10 20
0 100 10 30
0 100 10 40
0 100 10 50
0 100 10 60
0 100 10 70
0 100 10 80
0 100 10 90
0 100 10 100
请告知。
答案 0 :(得分:3)
Declare @t table (A INT, B INT, C INT);
INSERT INTO @t Values ( 0 , 100 , 10);
SELECT *
FROM @t t
CROSS APPLY (
SELECT TOP (t.B / t.c)
t.c * ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) D
FROM master..spt_values x CROSS JOIN master..spt_values y
) c;
答案 1 :(得分:0)
您可以使用WITH numbers AS
(
SELECT a,b,c, C AS Number
FROM Table1
UNION ALL
SELECT a,b,c, Number + b/c
FROM Numbers
WHERE Number + b/c <= b
)
SELECT * FROM numbers
{{1}}