날짜와 월을 연과 연결하려고 했으므로 각 레코드를 확인하여 재무 레코드를 확인해야합니다 년. 쿼리를 실행하면 () varchar 데이터 형식을 datetime 데이터 형식으로 변환하면 범위를 벗어나는 값이 발생했습니다 ..) 오류가 발생했습니다. 문제를 찾아 내도록 도와주세요.varchar 데이터 형식을 datetime 데이터 형식으로 변환하면 범위를 벗어나는 값 예외가 발생했습니다
코드
set @SiteFileVal1='04-01'
set @SiteFileVal2='03-31'
set @SiteFileYear='2013'
SELECT bb.Amount
FROM Budget bb
JOIN Invoice i ON i.AccountId=bb.AccountId
WHERE bb.AccountId=i.AccountId
AND bb.Year=
(SELECT CASE WHEN (i.Date >= convert(datetime,@SiteFileVal1+'-'+convert(varchar(200),DATEPART(yyyy,i.Date)))
AND i.Date < convert(datetime,@SiteFileVal2+'-'+convert(varchar(200), DATEADD(yyyy,1,DATEPART(yyyy,i.Date))))) THEN year(@SiteFileYear) ELSE DATEADD(yyyy,-1,DATEPART(yyyy,i.Date)) END)
당연히, 나는 관련 테이블의 스키마를 모른다.하지만이 쿼리는 연도가 올바르게 계산 된 후에도 많은 중복을 반환 할 수있다. 게다가, 당신은'AccountId'를 반환하지 않습니다 - 어떻게'Amount'가'AccountId'와 관련이 있습니까? 질문 데이터 샘플과 사용 된 테이블의 스키마를 추가하여 정확히 무엇을하려고하는지 자세히 설명해 주면 더 나은 해결책을 제안 할 수 있습니다. –