2011-11-06 6 views
0

SQL Server MS를 사용하고 있습니다. 나는 문제가이 스크립트를 쓰는 데이에 대한ISNULL, DATEDIFF 및 GETDATE를 사용하는 SQL - 계산 열

CREATE VIEW rental_view 
AS SELECT 
    m.movie_id, movie_name, co.copy_id, f.format_id, format_name, cu.customer_id, 
(first_name + ' ' + surname) AS customer_name, rental_id, rental_date, 
return_date, ISNULL(return_date, DATEDIFF(dd, rental_date, GETDATE())) 
AS rental_duration 
FROM movie AS m INNER JOIN copy AS co 
ON m.movie_id = co.movie_id 
INNER JOIN format AS f 
ON co.format_id = f.format_id 
INNER JOIN rental 
ON co.copy_id = rental.copy_id 
INNER JOIN customer AS cu 
ON rental.customer_id = cu.customer_id 

목표는 선택의 지정된 컬럼의 뷰를 작성하는 것입니다. 마지막으로 지정된 열은 계산 된 열로, 임대 날짜가 지난 임대 날짜 (return_date 값이 NULL 인 경우에만 해당)를 계산하여 INT로 표시합니다. 필자는 올바른 생각을하고 있지만, 실행될 때 해당 열에 나타나는 값은 DATATIME 데이터 유형 값이므로 의미가 없습니다.

내가 얻을 수있는 도움을 주시면 감사하겠습니다.

답변

1

아마도 이와 비슷한 것이 유용 할 것입니다. 값이 NULL이면 모호한 날짜 01-01-1900을 비교 한 다음 DATEDIFF 또는 0 값을 리턴하십시오.

CASE ISNULL(return_date,'19000101') 
    WHEN '19000101' THEN DATEDIFF(dd, rental_date, GETDATE()) 
    ELSE 0 END 
+0

나는 완벽하게 작동합니다. – Owen