我試圖在項目表中創建派生屬性可用性,爲了做到這一點,我需要創建一個連接?來自不同表的SQL計算Colums
可用性檢查今天的日期是否在checkoutDate和Returndate之間。
這裏是ER圖:
我試圖在項目表中創建派生屬性可用性,爲了做到這一點,我需要創建一個連接?來自不同表的SQL計算Colums
可用性檢查今天的日期是否在checkoutDate和Returndate之間。
這裏是ER圖:
如果你想用它作爲計算列,那麼我會推薦使用UDF。在你的圖中,你有可用性作爲布爾值。 SQL Server沒有布爾數據類型,所以我假設你的意思有點。這應該是相當接近,但你需要對其進行測試:
CREATE FUNCTION dbo.GetValue
(
@barcode int
)
RETURNS bit
AS
BEGIN
DECLARE @field bit
SELECT @field = CASE WHEN GETDATE()
BETWEEN L.LastReturnDate AND R.ReturnDate THEN 1 ELSE 0 END
FROM [Item] I
JOIN [Load] L ON I.barcode = L.barcode
JOIN [Return] R ON I.barcode = R.barcode
WHERE I.barcode = @barcode
RETURN @field
END
GO
,然後使用該作爲您的計算列:
ALTER TABLE dbo.Item
ADD Availability AS dbo.GetValue(barcode)
隨着中說,這可能是更適合於瀏覽。
ALTER TABLE dbo.Item ADD Availability AS dbo.GetValue(barcode)給我出現以下錯誤消息2705,級別16,狀態5,行1 每個表中的列名必須唯一。表'dbo.Item'中的列名'可用性'被多次指定。 – Dynamiite 2013-02-24 00:52:46
@Sebastian - 不幸的是,你不能改變現有的列 - 你收到的錯誤是因爲上面的嘗試添加一個新的列。你需要刪除並讀取該列 - 檢查這篇文章:http://stackoverflow.com/questions/2372655/how-can-i-alter-this-computed-column-in-sql-server-2008 - 祝你好運! – sgeddes 2013-02-24 00:58:13
感謝哥們,它工作 – Dynamiite 2013-02-24 01:23:45
@MahmoudGamal SQL Server 2008和er圖創建 – Dynamiite 2013-02-21 02:04:33