2016-07-29 2 views
0
아래의

은 내 SQL 쿼리의 일부입니다.SQL : 사례 이슈, 변환 날짜

문제는 내가 select 문에 CASE를 추가 할 때 오류가 발생한다는 것입니다. NSO 검토 열에 날짜가 있습니다. 그러나 모든 행 날짜에 사용할 수있는 것은 아니며 쿼리에서 '1900-01-01'을 대신 입력합니다. 이 값을 NO로 바꾸고 다른 값이 있으면 YES를 넣으려고합니다. 당신은

SELECT 'NSO Review' = ISNULL(tblTaskEventsHistory.TimeIn,''), 
     CASE CAST(tblTaskEventsHistory.TimeIn AS varchar(102)) 
     WHEN '1900' THEN 'NO' 
     ELSE 'YES' 
     END,  
     'Business Group' = ISNULL(MetadataBG.Value,''), 
     'CTN' = ISNULL(MetadataCT.Value,''), 

ERROR

에게 메시지 1038, 수준 15, 상태 5, 줄 277 객체를 도와주세요 수 또는 열 이름이 없거나 비어 있습니다. SELECT INTO 문의 경우 각 열에 이름이 있는지 확인하십시오. 다른 명령문의 경우 빈 별칭 이름을 찾으십시오. ""또는 []로 정의 된 별명은 허용되지 않습니다. 유효한 이름으로 별명을 변경하십시오.

+2

사용중인 RDBMS에 태그를 달아주십시오. 오류 메시지가 코드에 없습니다. – TheGameiswar

답변

0

당신은, 앞서 언급한다하면서, DateTime 함수를 사용하십시오. 날짜의 일부분을 비교하려면 DATEPART (https://msdn.microsoft.com/en-us/library/ms174420.aspx) 기능이 있습니다.

그럼 당신이 하나를 시도 할 수 :

SELECT 
CASE WHEN DATEPART(yy, tblTaskEventsHistory.TimeIn) = 1900 THEN 'NO' 
ELSE 'YES' 
END AS Status; 

가 당신을 도울거야 바랍니다.

1

오류 메시지 따라야 ''별칭으로 정의 "[]를 사용할 수 없습니다"와 "확인 각 컬럼 이름"가지고

SELECT NSO_Review = ISNULL(tblTaskEventsHistory.TimeIn,''), 
     TimeIn = CASE CAST(tblTaskEventsHistory.TimeIn AS varchar(102)) 
     WHEN '1900' THEN 'NO' 
     ELSE 'YES' 
     END, 
+0

SELECT INTO를 잊어 버렸습니다. – MaciejPL

+0

그 아래처럼 workig되지만 내가 ('tblTaskEventsHistory.TimeIn') 모든 YESes이 \t '통계청 검토'= ISNULL을 선택 얻을 \t \t CASE, \t tblTaskEventsHistory.TimeIn \t \t \t 언제 '1900'THEN 'NO' \t \t ELSE 'YES' \t \t 끝 부분 NSORequest, – MaciejPL

0

사례 명세서의 열 이름을 놓쳤습니다.