Sql 将查询另存为视图获取错误
我有这个查询,运行良好,没有问题Sql 将查询另存为视图获取错误,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有这个查询,运行良好,没有问题 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()]
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查询中使用它,但我在视图名称下会得到一条红线,当我将鼠标放在上面时,我会看到这条消息
对象名称无效
如果我在更复杂的查询中使用它,它根本不起作用
编辑:----------------------------------
阅读后感谢选择Distinct的评论
我修复了它,但仍然得到一个错误
“(”附近的WHERE子句出错
无法分析查询文本
以下是固定代码:
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]
尝试WHERE[Q1].sHost=[Q2].sHost而不是WHERE([Q1].sHost=[Q2].sHost)。想知道这些反斜杠是否需要转义?但在运行查询时它工作得很好!无论如何,我都会对它进行测试尝试在XML路径和[description]之间加一个逗号,比如:FOR XML路径(“”)),[SDesdescription]Mikael Eriksson解释了XML路径是如何工作的,可能是您使用它导致了问题SelectDistinct,我确实尝试过,它不起作用,我得到了一个错误,整个事情都不起作用了!