SQL Server 2008でまとめた表を脱凝集
-
25-09-2019 - |
質問
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!!
あなたが行識別子を得ることはありません - 。しかし、ID列を持つテーブルにクエリの結果を挿入すると、その対処でしょう。
所属していません StackOverflow