2016-12-01 13 views
0

の「イベントの連鎖」をゲット:私はこのようになりますテーブルを持つSQL

CustomerID | ContactTime  | AttemptResult 
-----------+-----------------+----------------- 
1   | 1/1/2016 5:00 | Record Started 
1   | 1/1/2016 6:00 | Appointment 
2   | 1/2/2016 5:00 | Record Started 
1   | 1/3/2016 6:00 | Sold 
2   | 1/2/2016 5:00 | Sold 
3   | 1/4/2016 5:00 | Record Started 
3   | 1/4/2016 6:00 | Sold 

私がために、すべての組み合わせを取得する方法でこれを照会することができますどのように
create table #temp1 
(
    CustomerID int, 
    ContactTime datetime, 
    Result nvarchar(50) 
) 

insert into #temp1 values (1, '1/1/2016 5:00', 'Record Started') 
insert into #temp1 values (1, '1/1/2016 6:00', 'Appointment') 
insert into #temp1 values (2, '1/2/2016 5:00', 'Record Started') 
insert into #temp1 values (1, '1/3/2016 6:00', 'Sold') 
insert into #temp1 values (2, '1/2/2016 5:00', 'Sold') 
insert into #temp1 values (3, '1/4/2016 5:00', 'Record Started') 
insert into #temp1 values (3, '1/4/2016 6:00 ', 'Sold') 

からのAttemptResults?だから、のようなもの:

CustID | Sequence 
-------+-------------------------------------- 
1  | Record Started -> Appointment -> Sold 
2  | Record Started -> Sold 
3  | Record Started -> Sold 

私はどこから始めればさえわからないんだけど...

答えて

-1

これはあなたの完全なデータセットの場合、私はあなたを助けることができます。それ以外の場合は、もっと見る必要があります。 ウィンドウ機能と呼ばれるものを使用してください。各CustomerIDのエントリ数を索引付けするか、または追跡します。その後

Select *, row_number() over (partition CustomerID group by ContactTime) as Combo 
    into #temp 
    from table 

どのように多くのコンボ2の起こる回数(レコードStarted->販売)、3のコンボは(録音が開始 - >アポイントメント - >販売)

Select CustomerID, max(Combo) as MaxCombo 
    into #temp1 
    from #temp 
    group by CustomerId 

    Select MaxCombo, count(*) 
    from #temp1 
    group by MaxCombo 

また共通テーブルを使用することができます式これらの一時テーブルの代わりに、私はあまりにも多くの混乱を追加したくありませんでした。

+0

これは私に 'CustomerID'の近くに不正な構文があります。 ' –

+0

私はそれを' ContactTime'によってCustomerID order by partitionに変更し、エラーを修正しましたが、結果は私が探しているものではありません。 –

関連する問題