2012-10-24 2 views
3

내보고 루틴 중 하나에서 갑작스러운 오류가 발생했으며이를 내 명세서의 일부로 되짚었습니다. 이 기능이 2 일 전까지 dbo.data_feed_file 테이블 (열 이름 : File_Date)에서 가장 최근의 날짜를 선택했습니다.가장 최근 날짜를 선택하는 SQL 문이 더 이상 작동하지 않습니다.

성명

HAVING (dbo.data_feed_file.file_date = (Select MAX(File_Date) as Expr1 
             FROM dbo.data_feed_file AS data_feed_file_1)) 

먼저 다음이를 작성하는 또 다른 방법이? 내 성명서를 삭제하여 보고서를 작성 했으므로 원하는 것보다 250 만 줄이 더 많습니다. 필자가 원하는 특정 날짜를 잡기 위해 날짜를 하드 코딩 할 수 있음을 알고 있지만 자동화가 분명 선호됩니다.

둘째 : 자발적으로 실패 할 수있는 원인을 아는 사람이 있습니까? 나는 아무 것도 변경되지 않았다는 것을 알기 위해이 쿼리를 편집 할 수있는 유일한 사람입니다 (실제로는 아무 것도 변경되지 않았습니다).

미리 감사드립니다.

편집 : 설명 추가 : 오류 메시지가 없습니다. 열 머리글이 예상대로 표시되지만 데이터가 채워지지 않습니다. 빈 필드 일뿐입니다 (조건이 충족되지 않은 것처럼). 이 문장은 아무 문제가없는 것처럼 완료됩니다. File_Date 열에 NULL 값이 없다는 것을 확인했습니다.

+1

pls 전체 문장 또는 적어도 오류 메시지를 게시하십시오. –

+0

NULL file_date가 있습니까? 일부 RDBMS는 MAX로 정렬하고, 일부는 MIN으로 정렬하고 Sql Server에 대해서는 알지 못합니다. – Karl

+0

표현식은 어떻게 실패합니까? –

답변

1

행이 반환되지 않는 두 가지 이유가 있다고 생각할 수 있습니다. 첫 번째는 하위 쿼리가 NULL을 반환한다는 것입니다.

HAVING (dbo.data_feed_file.file_date = (Select MAX(File_Date) as Expr1 
             FROM dbo.data_feed_file AS data_feed_file_1 
             where file_date is not null)) 

번째 File_Date 오히려 date보다는 datetime로 저장된다는 것이다 : 이것은 쉽게 고정된다. 그렇다면 where 절을 사용하여 가장 최근의 값을 필터링하고 having 절에서 누락시킬 수 있습니다. 날짜를 의도했지만 값이 datetime으로 저장되어 있으면 다음을 시도 할 수 있습니다.

HAVING (cast(dbo.data_feed_file.file_date as date) = 
             (Select cast(MAX(File_Date) as date) as Expr1 
             FROM dbo.data_feed_file AS data_feed_file_1 
             where file_date is not null)) 
+0

고든 고마워, 너는 해결책을 못 박았어. –

+0

@ChrisWoodend; 어느 것이 었습니까? NULL 또는 Datetime? – Karl

+0

@Karl 날짜/시간입니다. 외관상으로 누군가는 외부 데이타베이스에있는 스키마 변화를 만들고 아무에게도 알리지 않았다. –

관련 문제