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语句中执行此操作(因为它稍后将在视图中使用),而不是必须使用临时表或游标.
您可以使用递归cte来执行此操作
;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)