[英]SQL Server 2014 trying to create an indexed view however I'm getting the following error
SELECT
fcb.PharmacyKey as PharmID
,fcb.DateKeY as UploadDate
,fcb.RecordSource as Description
,fcb.Amount
FROM
dbo.FactCheckBookData fcb
WHERE
fcb.RecordSource in ('BeginningBalance')
AND convert(datetime, left(fcb.DateKey, 8),101) = DATEADD(MONTH, DATEDIFF(MONTH, 0, Convert(varchar(8), getdate(), 112)), 0)
錯誤:
無法在視圖'dbo.view'上創建索引,因為該視圖使用從字符串到日期時間或smalldatetime的隱式轉換。 使用具有確定性樣式值的顯式CONVERT。
您可以在上個月末增加一天。
SELECT
fcb.PharmacyKey as PharmID
,fcb.DateKeY as UploadDate
,fcb.RecordSource as Description
,fcb.Amount
FROM dbo.FactCheckBookData fcb
WHERE fcb.RecordSource in ('BeginningBalance')
AND convert(datetime,left(fcb.DateKey,8),101) =
DateAdd (Day, 1, EOMONTH(getdate(), -1))
如評論中所述,要查找每月的第一天,可以使用
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()),0)
但是,如果您更改代碼,則錯誤將更改為
Cannot create index on view 'someView'. The function 'getdate' yields nondeterministic results. Use a deterministic system function, or modify the user-defined function to return deterministic results.
因為GETDATE()
是不確定的,因此不能在索引視圖中使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.