【问题标题】:Occurrence in MS SQL Server在 MS SQL Server 中出现
【发布时间】:2021-01-19 00:06:23
【问题描述】:
create table #Task (ID int, Name varchar(1), Occurrence int)

insert into #Task values (1, 'A', 2)
insert into #Task values (2, 'B', 3)
insert into #Task values (3, 'C', 1)
insert into #Task values (4, 'D', 2)

select * from #Task
Go

【问题讨论】:

  • 您的问题是什么?你在这里什么都没问。
  • 认真的 2005 年?
  • 您在使用什么不受支持的 SQL Server 版本?
  • 请阅读this,了解一些改进问题的技巧。

标签: sql sql-server tsql sql-server-2008 sql-server-2005


【解决方案1】:

一个选项使用递归查询:

with cte as (
    select id, name, occurrence from #task
    union all
    select id, name, occurrence - 1 from cte where occurrence > 1
)
select id, name from cte order by id

Demo on DB Fiddle

编号 |姓名 -: | :--- 1 |一种 1 |一种 2 |乙 2 |乙 2 |乙 3 | C 4 | D 4 | D

【讨论】:

    【解决方案2】:

    如果您有一张带有数字的表格(也可以用于其他任务):

    select t.ID, t.Name
    from #Task as t join numbers as n
      on n.i between 1 and t.Occurrence
    

    简单搜索“创建数字表”了解如何创建此数字表。

    fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 2021-03-19
      • 2018-01-06
      相关资源
      最近更新 更多