저장 프로 시저에 전달 된 일부 매개 변수를 기반으로 데이터를 선택하려고합니다. 내가 나이 문제는, 내가 이런 일을하려고하고 있습니다 다음, 내 저장 프로 시저 매개 변수 @Age = 1
다음 나는 18-15 사이의 나이를 선택하는 경우SQL Server : SELECT 및 CASE
19 @Age = 2
을 - ... 25, 분명히 이것은 잘못된 것입니다, 사람 도울 수있다. 감사합니다 : 나는이 생각
SELECT
User
FROM
[Member] m
WHERE
((m.Gender = @Gender) or @Gender IS NULL)
and ((DATEDIFF(hour,m.DOB,GETDATE())/8766) Between
CASE
WHEN @Age = 1 THEN (SELECT DATEDIFF(hour, m.DOB, GETDATE())/8766 WHERE (SELECT DATEDIFF(hour, m.DOB, GETDATE())/8766) between 15 and 18)
WHEN @Age = 2 THEN (SELECT DATEDIFF(hour,m.DOB,GETDATE())/8766 WHERE (SELECT DATEDIFF(hour,m.DOB,GETDATE())/8766) between 19 and 25)
END)
연령을 처리하는 더 좋은 방법은 일반적으로 오늘 날짜에 필요한 (음수) 년을 더하고이를 'DOB' 열과 직접 비교하는 것입니다. 그것은 윤년에 이상한 퍼지를하지 않아도되고 잠재적으로'DOB' 칼럼의 인덱스를 사용할 수 있습니다. –