【发布时间】:2017-04-10 02:34:50
【问题描述】:
我正在创建一个使用 STUFF 函数的视图。我想将STUFF 的结果放在一个变量中以供我查看。我遇到的问题是声明我的变量。它给了我消息 “'DECLARE' 附近的语法不正确。期待 '(' 或 SELECT。” 我已经有 '(' 在那里。我尝试在它前面放一个 BEGIN。我已尝试将其放在 SELECT 单词之后。但似乎没有任何效果,我在搜索中找不到解决方案。我使用的是 SQL Server 2012
CREATE VIEW [AQB_OB].[GISREQUESTEDBURNS]
AS
(DECLARE @CONDITIONS AS varchar(20)
SET @CONDITIONS = (SELECT DISTINCT BD.[RequestedBurnsID]
,[ConditionsReasonsID] = STUFF((SELECT ', ' + CONVERT(VARCHAR (20),[ConditionsReasonsID]) FROM [AQB_OB].[BurnDecisions] WHERE [RequestedBurnsID]= BD.[RequestedBurnsID] ORDER BY [RequestedBurnsID] ASC
FOR XML PATH ('')) , 1 , 1, '') FROM
[AQB_OB].[BurnDecisions] BD)
SELECT RB.[RequestedBurnsID] AS REQUESTEDBURNID
,BUY.[BurnYear] AS BURNYEAR
,CY.[CurrentYear] AS CURRENTYEAR
,RB.[BurnSitesID] AS BURNSITESID
,[BurnerID] AS BURNERID
,[Contact] AS CONTACT
,[BurnDecision] AS BURNDECISION
,RB.[Comment] AS COMMENT
,@CONDITIONS AS CONDITIONS
FROM [AQB_MON].[AQB_OB].[RequestedBurns] RB
LEFT join AQB_MON.[AQB_OB].[PileDryness] PD on RB.[PileDrynessID] = PD.[PileDrynessID]
inner join AQB_MON.[AQB_OB].[BurnYear] BUY on BUY.BurnYearID = BP.BurnYearID
inner join AQB_MON.[AQB_OB].[CurrentYear] CY on CY.CurrentYearID = BUY.CurrentYearID
GO
【问题讨论】:
-
您不能在视图中声明变量。用户存储过程或函数。
-
这能回答你的问题吗? SQL Views - no variables?
标签: sql-server tsql sql-view declare