2017-09-06 5 views
0

Ich habe Schwierigkeiten zu versuchen, die Ergebnisse eines Falls innerhalb einer SQL-Abfrage zu subtrahieren. Kannst du mir helfen? Hier ist eine "vereinfachte" Version der Abfrage.Wie Subtrahieren zwei Aliase, die Ergebnis von zwei Fällen sind

SELECT  dbo.tbla.cola, dbo.tblb.colb, dbo.tblb.colc, 
CASE WHEN 
           (SELECT  TOP 1 dstStart 
            FROM   tblDst 
            WHERE  tblcd.Key = dbo.tblDst.Key) >= DTimeU AND 
           (SELECT  TOP 1 dstEnd 
            FROM   tblDst 
            WHERE  tblcd.Key = dbo.tblDst.Key) <= DTimeU 
THEN tblcd.ApUtc + 1 ELSE tblcd.ApUtc END AS DepDST, CASE WHEN 
           (SELECT  TOP 1 dstStart 
            FROM   tblDst 
            WHERE  tblca.Key = dbo.tblDst.Key) >= ATimeU AND 
           (SELECT  TOP 1 dstEnd 
            FROM   tblDst 
            WHERE  tblca.Key = dbo.tblDst.Key) <= ATimeU THEN tblca.ApUtc + 1 ELSE tblca.ApUtc END AS ArrDST 
    FROM   ... 
    WHERE  ... 

Wie konnte ich (ArrDST-DepDST) als DiffDST ausführen? Grüße, Dave

+0

Was ist das alles Wählen Sie Top ohne Ordered By-Klauseln? Sie können nicht darauf vertrauen, dass SQL Server Datensätze immer in der gleichen Reihenfolge zurückbringt. Wolltest du vielleicht MIN oder MAX? – Greenspark

Antwort

0

einfach die Abfrage mit einem anderen wählen wickeln:

SELECT t.*, t.ArrDST - t.DepDST as DiffDST 
FROM (YOUR QUERY HERE) t 

Dann werden alle berechneten Spalten wird für die Verwendung zur Verfügung stehen.