Wha*_*sUP 5 sql sql-server sql-server-2008
当前
Name Quantity
---------------
Stella 2
Jennifer 2
Greg 3
Run Code Online (Sandbox Code Playgroud)
要求的结果
Name Quantity
---------------
Stella 1
Stella 1
Jennifer 1
Jennifer 1
Greg 1
Greg 1
Greg 1
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
declare @T table
(
Name varchar(50),
Sales int
)
insert into @T values
('Stella', '2'),
('Jennifer', '2'),
('Greg', '3')
Run Code Online (Sandbox Code Playgroud)
使用递归并借用 Michael Fredrickson 的设置代码:
declare @T table (
Name varchar(50),
Sales int
)
insert into @T values ('Stella', '2')
insert into @T values ('Jennifer', '2')
insert into @T values ('Greg', '3')
-- Recursive verion
;with People (Name, Sales) as
(
select Name, Sales
from @T
union all
select Name, Sales - 1
from People
where Sales - 1 > 0
)
select Name, 1 as Quantity
from People
option (maxrecursion 0) -- Recurse without limit
Run Code Online (Sandbox Code Playgroud)
这似乎在我的机器上运行得更快(根据查询计划,比 Michael Fredrickson 的机器快 5 倍,但逻辑读取更多),但这并不重要。
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |