0

我正在使用 SQL Server MS。我在编写此脚本时遇到问题:

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 数据类型值,没有任何意义。

感谢我能得到的任何帮助。

4

1 回答 1

1

也许这样的事情会为你工作。如果该值为 NULL,则比较一个虚拟日期 01-01-1900,然后返回 DATEDIFF 或零值。

  CASE ISNULL(return_date,'19000101') 
  WHEN '19000101' THEN DATEDIFF(dd, rental_date, GETDATE()) 
  ELSE 0 END 
于 2011-11-06T09:52:14.277 回答