在SQL中返回重复的行数

Ice*_*ind 3 sql sql-server sql-server-2008

我有这样一张桌子:

|---------|-----|
| Name    | Qty |
|---------|-----|
| Joe     | 3   |
| Bill    | 2   |
| Mike    | 4   |
|---------|-----|
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个SELECT将返回此语句的语句:

|--------|
| Name   |
|--------|
| Joe    |
| Joe    |
| Joe    |
| Bill   |
| Bill   |
| Mike   |
| Mike   |
| Mike   |
| Mike   |
|--------|
Run Code Online (Sandbox Code Playgroud)

基本上,无论Qty字段设置为什么,Name返回的次数.我在这里发现了一个非常相似的问题,但这个问题适用于Oracle而我正在使用SQL Server.我也希望在一个SELECT语句中执行此操作(因为它稍后将在视图中使用),而不是必须使用临时表或游标.

SQL*_*hao 7

您可以使用递归cte来执行此操作

SQL小提琴示例

;with cte
as
(select * from table1
union all
select name, qty - 1
from cte
where qty - 1 > 0
)

select name from cte
order by name
Run Code Online (Sandbox Code Playgroud)