0

SQLServerMSを使用しています。このスクリプトを書くのに問題があります:

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 に答える