2017-12-29 4 views
1

MS SQL Server 2008을 사용하여 각 행의 최대 열 10 개를 계산하는 쿼리를 수행하고 있습니다. 그 쿼리는 아래와 같습니다. 또한 최대 날짜가있는 열의 이름을 나열해야합니다. 그래서 쿼리는 나에게 [마지막 단계 날짜]와 [마지막 단계 이름]을 줄 것입니다. [마지막 단계 이름]은 어떻게 얻을 수 있습니까?SQL 최대 복수 열의 날짜, 열 이름 반환

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 

답변

1

당신은

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

감사를 사용할 수 있습니다, 그것은 확실히 작동합니다! 난 여전히 여러 temp 테이블이 함께 오는 전체 쿼리에 삽입 할 때 뭔가를 밖으로 일할 필요가, 그것은 모든 행에 대해 동일한 값을 끌어 오기,하지만 그 알아낼 수 있어야합니다. – sornamins