簡體   English   中英

具有與SQL Server 2008 R2中的DISTINCT相同的結果的索引視圖和T-sql

[英]Indexed view and T-sql that give same results as DISTINCT in SQL Server 2008 R2

我想用這樣的T-SQL創建索引視圖MyView

Select 
    o.Theme_ID as Theme_ID,
    DATEADD(day, DATEDIFF(day, 0, o.Object_CreationDate), 0) as Objext_CreationDate,
    Count_BIG(*) as ObjectCount,   o.Object_Tonality from [dbo].Object o
inner join [dbo].Theme t on o.Theme_ID = t.Theme_ID
inner join [dbo].[ThemeWorkplace] tw on t.Theme_ID = tw.Theme_ID
inner join [dbo].Workplace w on w.Workplace_ID = tw.Workplace_ID
 ... where t.Theme_DeletedMark = 0
 AND (w.Workplace_AccessType = 1 OR w.Workplace_AccessType = 8)
 AND Object_DeletedMark = 0 ...
 Group BY o.Theme_ID,o.Object_Tonality, DATEADD(day, DATEDIFF(day, 0, o.Object_CreationDate), 0)

該t-sql可以正常工作,並允許在MyView上設置聚簇索引。

問題在於表ThemeWorkplace包含具有相同Theme_ID多個記錄。 而且甚至我使用GROUP BY我得到的Object_Count
等於:(實際Object_Count值)* count( Theme_ID中的ThemeWorkplace )。

我不能在t-sql中使用DISTINCT單詞,因為在這種情況下,無法在視圖上創建索引。

我認為要獲得正確的結果有什么建議?

正如您已經指出的,創建索引視圖有很多限制。 禁止使用可能在這里對您有所幫助的技術,例如獨立查詢或子查詢。 我認為在這種特殊情況下,您需要犧牲實現視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM