Frage

Ich habe Daten von einer externen Quelle empfängt, die in Form einer Zusammenfassung ist. Ich brauche einen Weg, dies zu zerlegen in ein System passen Ich verwende.

Zur Veranschaulichung, die Daten nehme an, ich erhielt sieht wie folgt aus:

receivedTable:

Age     Gender     Count
40      M          3
41      M          2

Ich möchte das ist ein aufgeschlüsselten Format wie folgt aus:

systemTable:

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

Danke
Karl

War es hilfreich?

Lösung

In Abhängigkeit von dem Bereich Ihrer Zählung Sie eine Lookup-Tabelle verwenden könnte, die genau x Datensätze für jede ganze Zahl x hält. Wie folgt aus:

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

dann mit dieser Tabelle verbinden:

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

Andere Tipps

Von den „Arbeiten auf meinem Rechner (TM)“ stabil eine rekursive Abfrage, mit allen üblichen Warnungen über maximale Rekursionstiefe.

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!!

Sie haben keine Zeilenbezeichner bekommen -. Aber mit einer Identitätsspalte mit dem würde behandeln das Ergebnis der Abfrage in eine Tabelle einfügen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top