本文介绍了生成从 1 到特定值的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!
问题描述
我要生成这样的结果假设我有这些记录
I am going to generate a result like this suppose I have this records
Salah 3
John 2
我会期待这个
Salah
Salah
Salah
John
John
推荐答案
一种方法,如果您总是对 n 使用 small 值,则使用 rCTE:
One method, if you always have a small value for n is to use a rCTE:
WITH rCTE AS(
SELECT [Name],
N,
1 AS I
FROM dbo.YourTable
UNION ALL
SELECT [Name],
N,
I + 1
FROM rCTE
WHERE I < N)
SELECT [Name]
FROM rCTe
ORDER BY [Name] DESC;
如果您有更大的数字,请使用性能更好的 Tally.我在这里使用内联:
If you have much larger numbers, use a more performamt Tally. I use an inline here:
WITH N AS(
SELECT N
FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N)),
Tally AS(
SELECT --TOP (SELECT MAX(N) FROM dbo.YourTable) --Limits the number of rows, which could also provide a performance benefit if you only sometimes have large numbers
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I
FROM N N1, N N2, N N3) --1000 rows, add more cross joins for more rows
SELECT [Name]
FROM dbo.YourTable YT
JOIN Tally T ON YT.N >= T.I
ORDER BY YT.[Name] DESC;
db<>fiddle
这篇关于生成从 1 到特定值的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!
The End


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)