2011-08-03 2 views
0

두 번 확인하고 차이를 계산하고 다른 필드에 값 (초)을 넣는 쿼리가 있습니다. 나는 그 분야를 분류한다. 문제는 시간 중 하나가 비어있는 경우 새 필드의 행이 채워지지 않아서 정렬 할 때 아무 것도없는 행을 맨 위로 밀어 넣을 때입니다.Access 2010 - null로 값을 대체해야합니다.

내가 원하는 것은 null을 다른 값으로 대체하는 것입니다. 9999999와 같은 것입니다. 그런 식으로 정렬을 수행하면 현재 행의 999999가 정렬의 맨 아래에 배치됩니다.

다음은 쿼리에 대한 SQL 식입니다.

SELECT FOCFClassic.FirstName, FOCFClassic.LastName, FOCFClassic.[Bib#], FOCFClassic.[2011SDStartTime], FOCFClassic.[2011SDFinishTime], Diff2Dates("ns",[FOCFClassic].[2011SDStartTime],[FOCFClassic].[2011SDFinishTime]) AS 2011SDRunTime, FOCFClassic.SDCategory, FOCFClassic.Team, FOCFClassic.SDRank, DateDiff("s",[2011SDStartTime],[2011SDFinishTime]) AS TotalTime 
    FROM FOCFClassic 
    WHERE (((Diff2Dates("ns",[FOCFClassic].[2011SDStartTime],[FOCFClassic].[2011SDFinishTime]))<>"") AND ((DateDiff("s",[2011SDStartTime],[2011SDFinishTime])) Is Not Null)) 
    ORDER BY FOCFClassic.SDRank, DateDiff("s",[2011SDStartTime],[2011SDFinishTime]); 

저는이 멍청한 녀석이에요.

미리 감사합니다! 고든

+0

DateDiff 표현식에서 null을 제외하면 지금 올바르게 작동하려고합니다. 달성해야 할 것은 널 (null)이 있으면 999999로 바꾸어야한다는 것입니다. 이렇게 할 수 있다면 ORDER BY가 99999로 행을 실행할 때 정렬의 맨 아래에 놓입니다. 희망이 도움이됩니다. 감사! –

답변

1

NZ() 함수를 사용할 수도 있습니다. NZ(MyDate, #1/1/1950#)은 필드가 null 인 경우 1 월 1 일을 반환하고, 그렇지 않으면 필드 값을 반환합니다. IIF() 및 ISNULL() 함수 또는 IS NULL 조건을 사용하여 동일한 결과를 얻을 수 있습니다.
성능면에서 보면 IIF(myDate IS NULL, #1/1/1950#, myDate)이 가장 빠릅니다.

+0

SortedTime을 사용하여 다른 필드를 만드는 작업을 수행 할 수있었습니다. IIf ([TotalTime] Is Null, 999999, [TotalTime]) 그 필드로 정렬했습니다. 감사! –

관련 문제