Helfen Sie den Unterschied bei der Suche nach (Delta) von einem Wert aus den letzten beiden Datensätze zurückgegeben

StackOverflow https://stackoverflow.com/questions/824597

Frage

Ich bin mit MS SQL 2005 und ich habe eine CTE-Abfrage Rückgabewert aus den letzten beiden Datensätze erstellt. Ich diese dann mit dem Delta von zwei Zahlen zurück zu finden. Ich habe eine funktionierende Abfrage der Art aber Ich habe Probleme etwas anderes als die Delta-Figur zu bekommen.

hier ist meine Frage:

;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

Was ich nach ist das Delta & NetObjectID zurück zu bekommen. Jedes Mal, wenn ich versuche, erhalte ich Fehler. data.NetObjectID is invalid in the select list because it is not contained in either an aggregate function or the group by clause.

Wenn ich Gruppe versuchen Sie, von etc .. Zum Ende der Abfrage erhalte ich weitere Fehler beschweren sich über das Wort ‚Gruppe‘.

Ich bin relativ neu in SQL und ich bin Kommissionierung Dinge, wie ich gehen. Jede mögliche Hilfe dankbar empfangen werden.

War es hilfreich?

Lösung

sehen, ob so etwas wie dies funktionieren wird.

;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
    NetObjectID,
    max(RawStatus)-min(RawStatus) as Delta
from data
group by NetObjectID

Andere Tipps

Sorry, ich bin hier ganz neu und ich bin nicht sicher, CTE-Abfragen, aber es sieht aus wie nach Daten definieren, Sie Fall sind die Auswahl ... als Delta FROM .... Bedeutung nur Delta haben in Ihrem select-Anweisung. Auch hier, sorry, wenn ich weg Basis.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top