J'utilise MS SQL 2005 et j'ai créé une requête CTE pour renvoyer des valeurs des deux derniers enregistrements. Je l'utilise ensuite pour trouver le delta de deux chiffres retournés. J'ai une question de travail de toutes sortes mais J'ai des problèmes pour obtenir autre chose que le chiffre delta.Aide pour trouver la différence (delta) à partir d'une valeur renvoyée par les deux derniers enregistrements
voici ma question:
;with data as(
SELECT
NetObjectID,
RawStatus,
RowID,
rn
from(
SELECT
CustomPollerAssignmentID AS NetObjectID,
RawStatus,
RowID,
row_number() over(order by DateTime desc)as rn
FROM CustomPollerStatistics_Detail
WHERE
(CustomPollerAssignmentID='a87f531d-4842-4bb3-9d68-7fd118004356')
) x where rn<=2
)
SELECT
case when
max(case rn when 1 then RawStatus end) > max(case rn when 2 then RawStatus end)
then
max(case rn when 1 then RawStatus end) - max(case rn when 2 then RawStatus end)
else
max(case rn when 2 then RawStatus end) - max(case rn when 1 then RawStatus end)
end as Delta
from data having
(SELECT
case when
max(case rn when 1 then RawStatus end) > max(case rn when 2 then RawStatus end)
then
max(case rn when 1 then RawStatus end) - max(case rn when 2 then RawStatus end)
else
max(case rn when 2 then RawStatus end) - max(case rn when 1 then RawStatus end)
end
from data) >= 1
Ce que je suis après est d'obtenir le Delta & NetObjectID retourné. Chaque fois que j'essaie, j'ai des erreurs. Si j'essaie d'ajouter un groupe par etc .. à la fin de la requête, je reçois plus d'erreur se plaindre du mot «groupe». Je suis relativement nouveau à SQL et je prends des choses comme je vais. Toute aide serait reçue avec gratitude.
Je ne pensais pas utiliser max() et min() de cette façon. Nice .... Oui, cela retourne ce dont j'ai besoin, même si je voudrais inclure la clause "ayant x> y". Des idées?? – MarkKneen
Que voulez-vous que la clause having fasse? – DForck42
Je ne sais pas si vous connaissez ou avez entendu parler d'une application appelée Solarwinds - Network Performance Monitor. Avec cette application, je peux concevoir des alertes basées sur un certain déclencheur. Ce SQL est l'un de ces déclencheurs. Fondamentalement, quand le Delta est supérieur à 48, je veux un résultat mais quand c'est moins de 48, je ne veux rien. Presque une réponse de type vrai/faux. – MarkKneen