J'ai une requête qui est supposée renvoyer la somme pour les entrées de "status" -duration. La durée est calculée en utilisant datediff (n, datestamp, (sous-requête qui renvoie le datestamp terminant l'état actuel, ie trouve le prochain ajustement "status change" -entry après celui verrouillé à)Requête SQL avec un problème d'identificateur en plusieurs parties au sein d'une sous-requête
Mon problème est que ce qui suit requête renvoie une erreur d'identification multi-partie
- le tableau INC me donne la « INCIDENT_NUMBER » Je suis à la recherche Wich est lié à « NUMBER » dans les autres tableaux
- ACTM1 détient tous DATESTAMP- Entrées
- ACTA1 est associé à ACTM1 via "THENU MBER » et contient toutes les informations sur si une entrée est un changement d'état approprié ou non
code:
SELECT SUM(DATEDIFF(n, ACTM1.DATESTAMP, END_DATESTAMP_TABLE.END_DATESTAMP))
FROM INC LEFT OUTER JOIN
ACTM1 ON INC.INCIDENT_NUMBER = ACTM1.NUMBER LEFT OUTER JOIN
ACTA1 ON ACTM1.THENUMBER = ACTA1.THENUMBER LEFT OUTER JOIN
/**/
(SELECT ACTM1_1.NUMBER, ACTM1_1.DATESTAMP AS END_DATESTAMP
FROM ACTM1 AS ACTM1_1 LEFT OUTER JOIN
/**/
(SELECT ACTM1_1_1.NUMBER, MIN(ACTM1_1_1.THENUMBER) AS FOLLOWUP_THENUMBER
FROM ACTM1 AS ACTM1_1_1
WHERE (ACTM1_1_1.THENUMBER > /**/ ACTM1_1.THENUMBER)/*I think here lies the problem*/
AND (ACTM1_1_1.[TYPE] IN ('Open', 'Status Change', 'Resolved', 'Closed')))
AS FOLLOWUP_THENUMBER_TABLE
/**/
ON ACTM1_1.NUMBER = FOLLOWUP_THENUMBER_TABLE.NUMBER)
AS END_DATESTAMP_TABLE
/**/
ON ACTM1.NUMBER = END_DATESTAMP_TABLE.NUMBER
WHERE ...
Je vous serais reconnaissant de tout commentaire utile ou laisser entendre que vous pourriez me donner sur ce ,
PS
En fait, cela a du sens. Il y a parfois plus d'un "ajustement" des entrées de changement d'état. Ces entrées sont triées par "THENUMBER" dans l'ordre chronologique ... En tout cas merci pour votre aide. – Per
Je ne parle pas d'un point de vue commercial, mais d'un point de vue SQL. Vous ne pouvez pas avoir des fonctions d'agrégation mélangées avec des champs non agrégées (ie. ACTM1_1_1.Number) withous un groupe par article. –
Qu'est-ce que vous voulez sans doute est '(SELECT TOP (1) NUMÉRO, leNombre ... ORDER BY leNombre ASC)' –