J'ai un scénario (dans SQL Server 2012) dans lequel je dois déterminer la relation parent-enfant entre les extensions d'un jour donné. J'ai réussi à obtenir les données dans un format qui peut identifier une fiche (c'est-à-dire Start CallerID et nextCallerID (transfert)), des sous-enregistrements et un enregistrement de fin (c'est-à-dire qui termine l'identificateur CallID). Voir le tableau ci-dessous.Recherche d'une relation parent-enfant où les niveaux peuvent être répétés
Le problème est que n'importe quel CallID ou NextCallID peut être répété plus tard le même jour en tant qu'appel Master, Sub ou End. Je dois fondamentalement trouver le bon groupe d'appels et le Master CallID doit être répété par groupe. En outre, un appel peut être transféré plusieurs fois, ce qui signifie qu'il peut avoir plusieurs enregistrements Sub.
données:
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
Résultat souhaité:
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
Comme vous pouvez le voir sur les données ci-dessus fixées, CallID 37594497 était un enfant à un enregistrement maître, puis plus tard dans la journée était un maître d'un nouvel enregistrement/appel. Toutes nos excuses si l'énoncé de problème/le format de la table n'est pas clair.
Toute aide à cet égard serait grandement appréciée.
Amendement:
Les solutions proposées ne fonctionne pas avec le scénario suivant:
données:
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
(au moyen de requête CTE):
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
sortie souhaité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
vous serions reconnaissants de votre aide.
Cordialement
ce n'est pas "Les solutions proposées ne fonctionnent pas avec le scénario suivant". Vous avez changé le scénario d'origine. Donc, je pense que vous devriez voter la réponse si elle correspond à votre requête originale. Ensuite, nous pouvons essayer de vous aider pour cette nouvelle demande. – etsa
Veuillez lire l'introduction à S.O. et apprendre à formater le texte. Puis ajoutez une brève description de ce que vous avez demandé dans votre "nouvelle" question et montrez votre effort (dans ce cas, qu'avez-vous essayé de faire pour résoudre votre nouvelle requête à partir de la requête en réponse?) – etsa
ça, mais ce n'est pas très facile (au moins au moins on dirait que oui ...) – etsa