私の友人の一人がこのQを私に持っていて、私はあまりにも困惑しています。識別子に基づいて2つの区間の間にデータを分離
彼のチームはDWをロードされ、データがアドホック基本的に増分し、全負荷のファッションに来て続けています。現在、フルロードが開始または停止したときの識別子フラグは となっています。今度は全負荷を集めて分離する必要があります。
create table #tmp (
id int identity(1,1) not null,
name varchar(30) null,
val int null
)
insert into #tmp (name, val) select 'detroit', 3
insert into #tmp (name, val) select 'california', 9
insert into #tmp (name, val) select 'houston', 1
insert into #tmp (name, val) select 'los angeles', 4
insert into #tmp (name, val) select 'newyork', 8
insert into #tmp (name, val) select 'chicago', 1
insert into #tmp (name, val) select 'seattle', 9
insert into #tmp (name, val) select 'michigan', 6
insert into #tmp (name, val) select 'atlanta', 9
insert into #tmp (name, val) select 'philly', 6
insert into #tmp (name, val) select 'brooklyn', 8
drop table #tmp
ルールがある:EXについて
valは図9に示すように、全負荷が開始されるたび。 valが8のときは常に の負荷が停止します。 (または次のvalが8になるたびに、全負荷が止まる)。この場合
は、全負荷のために、私はこれらのレコードを収集する必要があり:
ID名ヴァル
3ヒューストン1
4ロサンゼルス4
10フィラデルフィア6
私のアプローチ:
私はカーソルのアプローチの中にはなくCTEと、カーソルに進出したくない、啓発してください!
UPDATE:
私はルールを修正再表示しています回答の一つで述べたように。 - >フルロードレコードは、9時以降に開始されます(9番目のレコードは含まれません)。
- >直ちに読み込まれるまで全負荷が続きます。
- > 9と8フォーム全負荷の小さな塊
- >自体は、それが持っているとみなされません。個々の第九のレコードのパートナーとして何ら8ない
- 以下のような結果セットは、これらの条件を満たしている>
ミシガンも集められなければならない?そして、アトランタはダブルスタート以来どのように対処されていますか? –
開始は3回、終了は2回です。どのように処理したいですか? – JNK
@justin ...今や、8つのスタート・ストップ・ペアを形成するために9を伴わなければならないというルールがあります。アトランタ(9)の記録には、それに付随しているパートナー、すなわち6が含まれていないので、これを含めてはいけません。より多くのimp。ここでは9つのレコードを含めるのではなく、9-8のすべてのレコードからレコードを取り込み、必要に応じてval = 9のフィルタ句のみに含めることができます。 – Ram