2015-01-13 5 views
0

아래의 SQL 문을 사용하여 데이터베이스의 레코드를 검사하고 conWkActual, conWkPlanned 및 conWkBaseline 필드는 날짜 값입니다. conWkBaseline 필드는 항상 값을 가지지 만 다른 두 값은 NULL 일 수 있습니다. 그러나 conWkPlanned가 conWkBaseline보다 관련성이 높고 conWkActual에 가치가있는 경우 conwkAtual은 conwkPlanned보다 적합합니다. 내가 알고 싶은 것은 3 가지 대신 가장 관련성이 높은 날짜 만 출력하는 중첩 된 하위 쿼리를 가질 수 있다는 것입니다. conWkActual는 만조건부 중첩 된 하위 쿼리 작성 방법

SELECT C.conContractID, C.conWkActual, C.conWkPlanned, C.conWkBaseline, C.conService, 
C.conCapRev, C.conContractType, C.conSection, C.conContractStatus FROM Contracts C 
WHERE ConContractStatus = 'Cancelled'; 
+0

'유착에 대한 자세한 설명은 링크입니다 '여기에 언급 된 바와 같이 http://msdn.microsoft.com/en-us/library/ms190349.aspx –

답변

1

가 나는 그들이 null가 아닌 경우는 conWkActual, conWkPlanned 및 conWkBaseline에서 가장 관련성 날짜 필드를 필요로 가정하고 가치를 출력 값이있는 경우 예를 들어, 세 가지 모두 값이 다음 결정이있는 경우. 그런 경우가 있다면 당신은 가장 관련성 날짜 필드 여기

SELECT C.conContractID, COALESCE(C.conWkActual, C.conWkPlanned, C.conWkBaseline) AS 'YourDatecolumn', C.conService, C.conCapRev, C.conContractType, C.conSection, C.conContractStatus 
    FROM Contracts C 
    WHERE ConContractStatus = 'Cancelled'; 

에 대한 NOT NULL 값을 얻을 필요가있는 경우 다음 COALESCE 일을 할 것입니다 것은 COALESCEhttp://msdn.microsoft.com/en-us/library/ms190349.aspx

사용할 수
+0

감사합니다. 이 트릭을 할 것 같다 – AJF

+0

내가 괄호에 나열된 항목의 순서가 중요하다고 말하면 올바른 것입니다. 즉,이 경우 가장 관련성이 높은 conWkActual이 가장 먼저 나타납니다. – AJF

+0

네,'COALESCE'에 관해 읽는다면, 첫 번째 값은'NULL', 다음은 다음 값으로 넘어갑니다. 'NOT NULL'이면 그 값이 선택됩니다. –