3

計算列を作成しようとしましたが、列の 1 つが別のテーブルにあるため、UDF を作成する必要があることを理解しています。ここにERDへのリンクがあるので、関係を確認できます

http://imageshack.us/photo/my-images/23/databaseassignment2new.png/

これが私がやろうとしていることです。

CheckOutDate + loanperiod = lastreturndate
So the result would look something like this

Checkoutdate    loanperiod      lastreturndate

2012-1-01          3         2012-4-01

これは私がこれまでに持っているものです

  CREATE FUNCTION dbo.Getvaludates( @laastreturndate DATETIME)
  RETURNS DATETIME
  AS
 BEGIN
  DECLARE @lastReturndate DATETIME

  SELECT @lastReturndate= dateadd(month,loanperiod,CheckOutDate)
  FROM [Loan] I
    JOIN [Item] L ON I.barcode = L.barcode
    JOIN [Return] R ON I.barcode = R.barcode
   WHERE I.barcode = @lastreturndate
   RETURN @lastReturndate
   END 
   GO

そして、これを計算列に追加する必要があります

   ALTER TABLE dbo.Item
   ADD lastreturndate AS dbo.Getvaluedate(lastreturndate)       
4

1 に答える 1

3

UDF は次のようになるはずです。

CREATE FUNCTION dbo.Getvaluedate( @barcode int)
  RETURNS DATETIME
  AS
 BEGIN
  DECLARE @lastReturndate DATETIME

  SELECT @lastReturndate= dateadd(month,loanperiod,CheckOutDate)
  FROM [Loan] I
    JOIN [Item] L ON I.barcode = L.barcode
    JOIN [ItemDetails] ID ON L.isbn = ID.isbn
   WHERE I.barcode = @barcode

   RETURN @lastReturndate
   END ;

その後:

ALTER TABLE Loan ADD lastreturndate  AS dbo.Getvaluedate(barcode);

そして、これがSQL Fiddle Demoです

于 2013-02-25T01:05:47.137 に答える