我正在尝试创建视图VW_Checks。我正在使用STUFF合并列'Platforme'和'Systemname'中的记录以避免冗余数据的冗长列表。筛选使用子查询的视图
的观点:
CREATE VIEW [dbo].[VW_Checks] WITH SCHEMABINDING AS
SELECT DISTINCT C.CheckID AS CheckID, C.CheckTitle as CheckTitle,
STUFF((SELECT ', ' + PLATFORMNAME
FROM dbo.CHECK_PLATFORM CPP
WHERE CPP.CHECKID = C.CHECKID
for xml path('')),1,1,'') AS Platformname,
STUFF((SELECT ', ' + SYSTEMNAME
FROM dbo.CHECK_SYSTEM CSS
WHERE CSS.CHECKID = C.CHECKID
for xml path('')),1,1,'') AS Systemname
FROM dbo.[CHECK] C INNER JOIN
dbo.CHECK_CATEGORY CC ON C.CHECKID = CC.CHECKID
INNER JOIN dbo.CATEGORY CAT ON CC.CATEGORYID = CAT.CATEGORYID
INNER JOIN dbo.CHECK_SYSTEME CS ON CS.CHECKID = C.CHECKID
INNER JOIN dbo.CHECK_PLATFORM CP ON CP.CHECKID = C.CHECKID
的观点是好的,因为它是(意思是它正好说明了我想让它显示的),但是当我试图筛选我的看法,这是行不通的。我的问题
例如:
SELECT *
FROM VW_Checks VW_C
WHERE CONTAINS(VW_P.Platformname,'iOS')
在SELECT语句的WHERE子句上面并没有在所有的工作,仿佛它甚至不存在。 由于VW_P.Platformname
是组合列(使用子查询),因此我无法在我的视图上创建唯一索引。
当我尝试创建唯一索引错误消息: Error: 10127, Severity: 16, Cannot create unique index I_VW_Checks on view VW_Checks because it contains one or more subqueries. Consider changing the view to use only joins instead of subqueries. Alternatively, consider not indexing this view.
我怎样才能改变我的看法/添加索引到它,所以我可以正确地过滤,而不会失去我的合并记录?