首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将查询保存为视图获取错误

将查询保存为视图获取错误
EN

Stack Overflow用户
提问于 2013-06-24 12:11:17
回答 1查看 731关注 0票数 2

我有这个查询,运行良好,没有问题!

代码语言:javascript
复制
SELECT [Q].sHost
    , LEFT([Q].sDescription, Len([Q].sDescription) - 1) AS [sDescription]
FROM (

    SELECT DISTINCT [Q2].sHost
        , (
            SELECT CONVERT(NVARCHAR(MAX), [Q1].[sDescription]) + N', ' AS [text()]
            FROM (
                SELECT (
                        CASE 
                            WHEN (CHARINDEX('\', [sInstance]) = 0)
                                THEN [sInstance]
                            ELSE substring([sInstance], 0, CHARINDEX('\', [sInstance]))
                            END
                        ) AS sHost
                    , [sDescription]
                FROM [db_group].[dbo].[instanceCommentsList]
                ) AS [Q1]
            WHERE ([Q1].sHost = [Q2].sHost)
            FOR XML PATH('')
            ) [sDescription]
    FROM (
        SELECT (
                CASE 
                    WHEN (CHARINDEX('\', [sInstance]) = 0)
                        THEN [sInstance]
                    ELSE substring([sInstance], 0, CHARINDEX('\', [sInstance]))
                    END
                ) AS sHost
            , [sDescription]
        FROM [db_group].[dbo].[instanceCommentsList]
        ) AS [Q2]
    ) AS [Q]

将此查询保存为视图时,将得到以下错误

在WHERE子句“(”)中出现错误。 在“=”附近的WHERE子句中出现错误。不能 要解析查询文本,请执行以下操作。

不知道问题在哪里!

它可以保存任何方式,而且可以工作,我可以在一个简单的select查询中使用它,但是我在视图的名称下得到了一条红线,当我把鼠标放到上面时,我得到了以下消息

对象名无效..。

如果我在一个更复杂的查询中使用它,它根本不起作用。

编辑:?

在阅读Cannot get FOR XML PATH to work后感谢Cannot get FOR XML PATH to work的评论

我修好了,但还是有一个错误!

在WHERE子句“(”)中出现错误。 无法解析查询文本。

这是固定代码:

代码语言:javascript
复制
SELECT [Q].sHost
    , LEFT([Q].sDescription, Len([Q].sDescription) - 1) AS [sDescription]
FROM (

    SELECT DISTINCT [Q2].sHost
        , (
            SELECT CONVERT(VARCHAR(MAX), [Q1].[sDescription]) + ', ' AS [text()]
            FROM (
                SELECT (
                        CASE 
                            WHEN (CHARINDEX('\', [sInstance]) = 0)
                                THEN [sInstance]
                            ELSE substring([sInstance], 0, CHARINDEX('\', [sInstance]))
                            END
                        ) AS sHost
                    , [sDescription]
                FROM [db_group].[dbo].[instanceCommentsList]
                ) AS [Q1]
            WHERE ([Q1].sHost = [Q2].sHost)
            FOR XML PATH(''), type
       ).value('.', 'varchar(max)') as [sDescription]
    FROM (
        SELECT (
                CASE 
                    WHEN (CHARINDEX('\', [sInstance]) = 0)
                        THEN [sInstance]
                    ELSE substring([sInstance], 0, CHARINDEX('\', [sInstance]))
                    END
                ) AS sHost
            , [sDescription]
        FROM [db_group].[dbo].[instanceCommentsList]
        ) AS [Q2]
    ) AS [Q]
EN

回答 1

Stack Overflow用户

发布于 2015-10-20 15:51:26

尝试WHERE Q1.sHost = Q2.sHost而不是WHERE (Q1.sHost = Q2.sHost)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17275162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档