我可以使用在视图中使用FOR xml Path的内部选择

时间:2015-07-30 04:43:04

标签: tsql sql-server-2008-r2 views

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

注意,它在运行时确实有效。它允许我保存视图并查询视图。但是当我在设计视图中打开它时会发生三件奇怪的事情:

  1. 我在&{39}附近的where子句中收到错误(' - 按顺序条款出错。无法传递查询文字

  2. 缺少第一部分,图表区域中没有表格

  3. 缺少第二部分,字段列表中没有字段。

  4. 这就是说,单击确定以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 
    

    非常奇怪。它似乎工作,可以查询,但在设计视图中不表现,每次打开视图时都会出现此错误(在设计视图中)。我做过一些有效但不应该做的事吗?

0 个答案:

没有答案