我已经从外部源,这是在一个概括的格式接收到的数据。我需要一种方法来分解这种装配到我使用的系统。

要说明,假设数据I接收看起来像这样:

receivedTable:

Age     Gender     Count
40      M          3
41      M          2

我想这是一个分类格式是这样的:

systemTable:

ID      Age        Gender
1       40         M          
2       40         M 
3       40         M 
4       41         M          
5       41         M 

由于结果 卡尔

有帮助吗?

解决方案

根据您可以使用保存精确的x纪录每一个整数x查找表的计数范围。像这样:

create table counter(num int)
insert into counter select 1

insert into counter select 2
insert into counter select 2

insert into counter select 3
insert into counter select 3
insert into counter select 3

insert into counter select 4
insert into counter select 4
insert into counter select 4
insert into counter select 4

,然后用此表连接:

create table source(age int, gender char(1), num int)
insert into source select 40, 'm', 3
insert into source select 30, 'f', 2
insert into source select 20, 'm', 1

--insert into destination(age, gender)
    select age, gender
    from source
        inner join counter on counter.num = source.num

其他提示

稳定递归查询,“我的机器(TM)上的工作原理”

从约最大递归深度所有常见的注意事项。

with Expanded(exAge, exGender, exRowIndex) as
(
    select
        Age as exAge, 
        Gender as exGender, 
        1 as exRowIndex
    from
        tblTest1
    union all
        select
            exAge,
            exGender,
            exRowIndex+1
        from
            tblTest1 t1 
            inner join
            Expanded e on (e.exAge = t1.Age and e.exGender = t1.Gender and e.exRowIndex < t1.Count)         
)
select
    exAge, 
    exGender, 
    exRowIndex
from
    Expanded
order by 
    exAge, 
    exGender, 
    exRowIndex
option (MAXRECURSION 0)  -- BE CAREFUL!!

您没有得到行标识符 - 但在插入查询的结果到表包含标识列将处理与

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top