2017-12-29 4 views
1

Verwendung von MS SQL Server 2008, mache ich eine Abfrage, um den Max Datum von 10 Spalten für jede Zeile zu berechnen. Diese Abfrage ist unten. Ich muss auch den Namen der Spalte auflisten, die das maximale Datum hat. Also würde die Abfrage mir das [Datum des letzten Schritts] und den [Namen des letzten Schritts] geben. Wie erhalte ich den [Namen des letzten Schritts]?SQL Max Datum mehr Spalten, Rückkehr Spaltenname

SELECT (SELECT MAX(LastUpdateDate) 
     FROM (VALUES ([Step 1]), 
         ([Step 2]), 
         ([Step 3]), 
         ([Step 4]), 
         ([Step 5]), 
         ([Step 6]), 
         ([Step 7]), 
         ([Step 8]), 
         ([Step 9]), 
         ([Step 10])) AS UpdateDate(LastUpdateDate)) AS [Last Step Date] 
FROM MyTable 

Antwort

1

Sie können

SELECT ca.ColName, ca.LastUpdateDate 
FROM YourTable 
     CROSS APPLY (SELECT TOP 1 * 
        FROM (VALUES 
         ('Step1', [Step 1]), 
         ('Step2', [Step 2]), 
         ('Step3', [Step 3]), 
         ('Step4', [Step 4]), 
         ('Step5', [Step 5]), 
         ('Step6', [Step 6]), 
         ('Step7', [Step 7]), 
         ('Step8', [Step 8]), 
         ('Step9', [Step 9]), 
         ('Step10', [Step 10])) UpdateDate(ColName, LastUpdateDate) 
        ORDER BY LastUpdateDate DESC)ca 

SQL Fiddle

+0

Danke, funktioniert das auf jeden Fall! Ich muss immer noch etwas ausarbeiten, als ich es in die gesamte Abfrage eingefügt habe, die mehrere temporäre Tabellen zusammenkommen, zieht es den gleichen Wert für alle Zeilen, aber ich sollte in der Lage sein, das herauszufinden. – sornamins