Sql server SSRS查询设计器“;必须声明标量变量“;对于多个列的最大值
我的目标是获得报表数据集中三个不同列的最大值。我正在SSRS查询设计器中为新数据集使用此查询:Sql server SSRS查询设计器“;必须声明标量变量“;对于多个列的最大值,sql-server,reporting-services,sql-server-2014,Sql Server,Reporting Services,Sql Server 2014,我的目标是获得报表数据集中三个不同列的最大值。我正在SSRS查询设计器中为新数据集使用此查询: SELECT SurveyID, (SELECT Max(valueColumn) FROM (VALUES (field1), (field2), (field3)) AS TableOfValues(valueColumn)) as MaxVal FROM ENVIRONMENTAL_EVW WHERE SurveyID = @surveyi
SELECT SurveyID,
(SELECT Max(valueColumn)
FROM (VALUES (field1), (field2), (field3)) AS TableOfValues(valueColumn)) as MaxVal
FROM ENVIRONMENTAL_EVW
WHERE SurveyID = @surveyid
然而,我没有像往常一样弹出对话框窗口,给我一个声明变量的机会,而是将“必须声明标量变量”作为一个错误
如果删除WHERE子句,则会出现“无法解析查询文本”错误,但仍然正确完成操作并显示结果表。如果我删除子查询以查找最大值,它会正确地弹出窗口并要求输入变量
SSRS数据集中不支持这种子查询吗?具体来说,如何在SSRS SELECT语句中找到最大值?任何值都可以为null
我使用的是Visual Studio 2015,目标服务器设置为“SQL server 2008 R2、2012或2014”,以防万一。这是SQL Server 2014。我用在中找到的内容回答了这个问题。我认为这个问题略有不同,因为它涉及SSR,并且涉及空值。我仍然不知道为什么原始版本不起作用,但这确实起了作用:
SELECT SurveyID,
EnvironmentalID,
CASE
WHEN field1>= COALESCE(field2,'') AND field1 >= COALESCE(field3,'') THEN field1
WHEN field2 >= COALESCE(field1,'') AND field2 >= COALESCE(field3,'') THEN field2
WHEN field3 >= COALESCE(field1, '') AND field3 >= COALESCE(field2,'') THEN field3
ELSE field1
END AS MaxVal
WHERE SurveyID = @surveyid
这对最小值也起相反的作用,但是您需要将一些值设置为比所有可能的值高得多的值,而不是合并中的“”值。我使用在中找到的内容来回答这个问题。我认为这个问题略有不同,因为它涉及SSR,并且涉及空值。我仍然不知道为什么原始版本不起作用,但这确实起了作用:
SELECT SurveyID,
EnvironmentalID,
CASE
WHEN field1>= COALESCE(field2,'') AND field1 >= COALESCE(field3,'') THEN field1
WHEN field2 >= COALESCE(field1,'') AND field2 >= COALESCE(field3,'') THEN field2
WHEN field3 >= COALESCE(field1, '') AND field3 >= COALESCE(field2,'') THEN field3
ELSE field1
END AS MaxVal
WHERE SurveyID = @surveyid
这对最小值也起相反的作用,但是在合并中,您需要将一些值放在比所有可能值高得多的位置,而不是放在“”中。