SQL Server 2008 R2:我可以使用在视图中使用FOR XML PATH
的内部选择吗? ' relatedProductIDString'的目的是在一个字段中生成逗号分隔的ID字符串。
这是内部选择
(SELECT
CAST(productRelated.relatedProductID AS varchar) + ', '
FROM
productRelated
WHERE
productRelated.parentProductId = productWebSource.ProductWebID
FOR XML PATH('')) AS relatedProductIDString
注意,它在运行时确实有效。它允许我保存视图并查询视图。但是当我在设计视图中打开它时会发生三件奇怪的事情:
我在&{39}附近的where
子句中收到错误(' - 按顺序条款出错。无法传递查询文字
缺少第一部分,图表区域中没有表格
缺少第二部分,字段列表中没有字段。
这就是说,单击确定以1中描述的错误,运行我的视图并显示正确的结果。
以下是完整性的完整视图:
SELECT TOP (100) PERCENT
dbo.productWebSource.ProductWebID AS productID,
dbo.productWebSource.ProductName AS productName,
dbo.ProductType.ProductTypeName AS productType,
dbo.ProductStatus.ProductStatusDesc AS productStatus,
dbo.productWebSource.metaData,
dbo.productWebSource.metaDescription,
dbo.productWebSource.classification,
dbo.productWebSource.trademarkName,
dbo.trademarkOwner.title AS trademarkOwnerName,
dbo.productWebSource.RegCountry AS country,
dbo.productWebSource.vetExclusive,
dbo.productWebSource.ProductDesc AS basicDescription,
dbo.productWebSource.UVPNumber AS uvpNumber,
(SELECT CAST(productRelated.relatedProductID AS varchar) + ', '
FROM productRelated
WHERE productRelated.parentProductId = productWebSource.ProductWebID FOR XML PATH('')) AS relatedProductIDString
FROM
dbo.ProductType
RIGHT OUTER JOIN
dbo.productWebSource ON dbo.ProductType.ProductTypeID = dbo.productWebSource.ProductTypeID
LEFT OUTER JOIN
dbo.ProductStatus ON dbo.productWebSource.ProductStatusID = dbo.ProductStatus.ProductStatusID
LEFT OUTER JOIN
dbo.trademarkOwner ON dbo.productWebSource.trademarkOwnerId = dbo.trademarkOwner.trademarkOwnerId
WHERE
(dbo.productWebSource.ProductStatusID < 4)
ORDER BY
productName
非常奇怪。它似乎工作,可以查询,但在设计视图中不表现,每次打开视图时都会出现此错误(在设计视图中)。我做过一些有效但不应该做的事吗?