私は、特定の日の拡張子間の親子関係を決定するシナリオを(SQL Server 2012で)持っています。私は、マスターレコード(すなわち、Start CallerIDおよびnextCallerID(転送))、サブレコードおよび終了レコード(すなわち、終了CallID)を識別できるフォーマットにデータを取得することができました。下の表を参照してください。レベルを繰り返すことができる親子関係の検索
問題は、任意のCallIDまたはNextCallIDを、Master、Sub、またはEndコールと同じ日に後で繰り返すことができることです。基本的に正しいコールグループを見つけなければならず、マスターCallIDはグループごとに繰り返さなければなりません。また、呼び出しを何度も転送することができます。つまり、多くのSubレコードを持つことができます。
データ:
Timestamp | CallID | NextCallID | Type
------------------------|-------------|-------------|-----
2017-07-26 14:37:24.000 | 37468024 | 37594497 | M
2017-07-26 14:51:27.000 | 37594497 | 37595080 | S
2017-07-26 14:59:30.000 | 37595080 | 37512345 | S
2017-07-26 14:59:59.000 | 37512345 | NULL | E
2017-07-26 18:59:59.000 | 37594497 | NULL | M
望ましい結果:
Timestamp | MasterCallID | CallID | NextCallID | Type
------------------------|------------- |-----------|------------|-------
2017-07-26 14:37:24.000 | 37468024 | 37468024 | 37594497 | Master
2017-07-26 14:51:27.000 | 37468024 | 37594497 | 37595080 | Sub/transfer
2017-07-26 14:59:30.000 | 37468024 | 37595080 | 37512345 | Sub/transfer
2017-07-26 14:59:59.000 | 37468024 | 37512345 | NULL | End Call
2017-07-26 18:59:59.000 | 37594497 | 37594497 | NULL | Master
あなたは上記の設定データからわかるように、CallID 37594497は、マスタレコードに子供だったし、その後の日中でした新しい記録/呼び出しのマスター。
問題のステートメント/テーブル形式が不明な場合にお詫び申し上げます。 この点に関するご支援をいただければ幸いです。
改正:
提案されたソリューションは、次のようなシナリオでは動作しません:
データ:(CTEクエリを使用して)
Timestamp | CallID | NextCallID | Type
------------------------|-------------|-------------|-----
2017-07-26 07:08:32.000 | 37461343 | 37565836 | M
2017-07-26 07:31:06.000 | 37565804 | 37565938 | M
2017-07-26 07:35:23.000 | 37565836 | 37565909 | S
2017-07-26 07:42:23.000 | 37565909 | NULL | E
2017-07-26 07:45:04.000 | 37565938 | 37566044 | S
2017-07-26 07:52:59.000 | 37566044 | NULL | E
2017-07-26 18:14:26.000 | 37565461 | 37565909 | M
2017-07-26 18:24:48.000 | 37565804 | NULL | M
2017-07-26 18:26:11.000 | 37565836 | NULL | M
2017-07-26 18:29:23.000 | 37565909 | 37566044 | S
2017-07-26 18:30:06.000 | 37565938 | NULL | M
2017-07-26 18:33:11.000 | 37566044 | NULL | E
出力:
Timestamp | MasterCallID| CallID | NextCallID | Type
------------------------|-------------|-------------|---------------|-------
2017-07-26 07:08:32.000 | 37461343 | 37461343 | 37565836 | M
2017-07-26 07:31:06.000 | 37565804 | 37565804 | 37565938 | M
2017-07-26 07:35:23.000 | 37461343 | 37565836 | 37565909 | S
2017-07-26 07:42:23.000 | 37461343 | 37565909 | NULL | E
2017-07-26 07:42:23.000 | 37565461 | 37565909 | NULL | E
2017-07-26 07:45:04.000 | 37565804 | 37565938 | 37566044 | S
2017-07-26 07:52:59.000 | 37461343 | 37566044 | NULL | E
2017-07-26 07:52:59.000 | 37565461 | 37566044 | NULL | E
2017-07-26 07:52:59.000 | 37565804 | 37566044 | NULL | E
2017-07-26 18:14:26.000 | 37565461 | 37565461 | 37565909 | M
2017-07-26 18:24:48.000 | 37565804 | 37565804 | NULL | M
2017-07-26 18:26:11.000 | 37565836 | 37565836 | NULL | M
2017-07-26 18:29:23.000 | 37461343 | 37565909 | 37566044 | S
2017-07-26 18:29:23.000 | 37565461 | 37565909 | 37566044 | S
2017-07-26 18:30:06.000 | 37565938 | 37565938 | NULL | M
2017-07-26 18:33:11.000 | 37461343 | 37566044 | NULL | E
2017-07-26 18:33:11.000 | 37565461 | 37566044 | NULL | E
2017-07-26 18:33:11.000 | 37565804 | 37566044 | NULL | E
所望の出力:
Timestamp | MasterCallID| CallID | NextCallID | Type
------------------------|-------------|-------------|---------------|-------
2017-07-26 07:08:32.000 | 37461343 | 37461343 | 37565836 | M
2017-07-26 07:35:23.000 | 37461343 | 37565836 | 37565909 | S
2017-07-26 07:42:23.000 | 37461343 | 37565909 | NULL | E
2017-07-26 07:31:06.000 | 37565804 | 37565804 | 37565938 | M
2017-07-26 07:45:04.000 | 37565804 | 37565938 | 37566044 | S
2017-07-26 07:52:59.000 | 37565804 | 37566044 | NULL | E
2017-07-26 18:14:26.000 | 37565461 | 37565461 | 37565909 | M
2017-07-26 18:29:23.000 | 37565461 | 37565909 | 37566044 | S
2017-07-26 18:33:11.000 | 37565461 | 37566044 | NULL | E
2017-07-26 18:26:11.000 | 37565836 | 37565836 | NULL | M
が大幅にご協力をお願い申し上げます。
よろしく
「提案されたソリューションは、次のシナリオでは機能しません」。元のシナリオを変更しました。だから、私はあなたが元のクエリに対応している場合は、投票にすべきだと思います。その後、私たちはこの新しい要求に対してお手伝いします。 – etsa
PlsはS.O.テキストの書式設定を学びます。次に、あなたの "新しい"質問に尋ねたものの簡単な説明を追加して、あなたの努力を示します(この場合、回答の質問から新しい要求を解決しようとしたことは何ですか?) – etsa
私は取り組んでいますそれは非常に簡単ではありません(少なくとも現時点でそうそうです...) – etsa