Sql server stroset函数要求1参数使用元组集表达式。使用了字符串或数字表达式
我使用reporting services,使用参数,所以我有如下查询:Sql server stroset函数要求1参数使用元组集表达式。使用了字符串或数字表达式,sql-server,reporting-services,ssas,mdx,olap-cube,Sql Server,Reporting Services,Ssas,Mdx,Olap Cube,我使用reporting services,使用参数,所以我有如下查询: SELECT NON EMPTY { [Measures].[ReclamosBSC_Reclamos] } ON COLUMNS, NON EMPTY { ([Dim_Tiempo_].[Anio].[Anio].ALLMEMBERS * [Dim_Tiempo_].[Mes].[Mes].ALLMEMBERS * [Dim_Tiempo_].[NombreMesAbrevia
SELECT
NON EMPTY { [Measures].[ReclamosBSC_Reclamos] } ON COLUMNS,
NON EMPTY { ([Dim_Tiempo_].[Anio].[Anio].ALLMEMBERS
* [Dim_Tiempo_].[Mes].[Mes].ALLMEMBERS
* [Dim_Tiempo_].[NombreMesAbreviado].[NombreMesAbreviado].ALLMEMBERS
* [Dim_PlantaCentro_].[IdGrupo].[IdGrupo].ALLMEMBERS
* [Dim_PlantaCentro_].[NombreGrupo].[NombreGrupo].ALLMEMBERS
* [Dim_PlantaCentro_].[IdDivision].[IdDivision].ALLMEMBERS
* [Dim_PlantaCentro_].[NombreDivision].[NombreDivision].ALLMEMBERS
* [Dim_PlantaCentro_].[IdPlanta].[IdPlanta].ALLMEMBERS
* [Dim_PlantaCentro_].[Planta].[Planta].ALLMEMBERS
* [Dim_ClientePadre_].[Dim_ClientePadre_].[Dim_ClientePadre_].ALLMEMBERS ) }
DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_VALUE, MEMBER_UNIQUE_NAME ON ROWS
FROM
(
SELECT
( STRTOSET(@DimTiempoMes) ) ON COLUMNS
FROM
(
SELECT
( STRTOSET(@DimTiempoAnio) ) ON COLUMNS
FROM
[BSC]
)
)
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
当我使用查询设计器时,它会正确运行,但当我尝试查看报表预览时,它会返回:
stroset函数需要1的元组集表达式
论点使用了字符串或数字表达式
有人能解释一下我的查询出了什么问题吗?假设预览功能将年和月参数值分别设置为2017和9,您可以按如下方式重写查询:
SELECT
NON EMPTY { [Measures].[ReclamosBSC_Reclamos] } ON COLUMNS,
NON EMPTY { ([Dim_Tiempo_].[Anio].[Anio].ALLMEMBERS
* [Dim_Tiempo_].[Mes].[Mes].ALLMEMBERS
* [Dim_Tiempo_].[NombreMesAbreviado].[NombreMesAbreviado].ALLMEMBERS
* [Dim_PlantaCentro_].[IdGrupo].[IdGrupo].ALLMEMBERS
* [Dim_PlantaCentro_].[NombreGrupo].[NombreGrupo].ALLMEMBERS
* [Dim_PlantaCentro_].[IdDivision].[IdDivision].ALLMEMBERS
* [Dim_PlantaCentro_].[NombreDivision].[NombreDivision].ALLMEMBERS
* [Dim_PlantaCentro_].[IdPlanta].[IdPlanta].ALLMEMBERS
* [Dim_PlantaCentro_].[Planta].[Planta].ALLMEMBERS
* [Dim_ClientePadre_].[Dim_ClientePadre_].[Dim_ClientePadre_].ALLMEMBERS ) }
DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_VALUE, MEMBER_UNIQUE_NAME ON ROWS
FROM
(
SELECT
{ ( STRTOMEMBER('[Dim_Tiempo_].[Mes].[Mes].[' + @DimTiempoMes + ']') ) } ON COLUMNS
FROM
(
SELECT
{ ( STRTOMEMBER('[Dim_Tiempo_].[Anio].[Anio].[' + @DimTiempoAnio + ']') ) } ON COLUMNS
FROM
[BSC]
)
)
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
使用嵌套子查询将允许您在SELECT子句中包含行轴上的年和月。如果使用WHERE子句,则在SELECT子句中包含年份和月份时会出现错误。预览报表时使用了哪些@DimTiempoMes和@DIMTIEMPANIO参数值?它们是否与在查询设计器中运行时相同?是的,我想在预览@jhenningerI中使用它,我使用它将参数发送到查询,然后根据它们进行筛选@jhenninger在预览报告时,您可以共享为两个参数发送的值吗?@jhenninger是一个是年,等于2017,另一个是月,等于9,所以我发送DIMTIEMPANIO=2017和DimTiempoMes=9。问题是我用我想要的值设置参数,我可以通过2017年、2016年或2015年,所以查询搜索取决于我传递的值,这就是为什么我有参数。我需要WHERE条款?如何将WHERE子句添加到我的代码中?我使用原始查询的更新更新了答案。这都是假设参数值如您所述被发送进来。但DIMTIEMPANIO和DimTiempoMes并没有在报告中预收费,当我运行预览时,我有两列带有此字段,在那里我插入参数值,然后我clic查看报告,现在报告带有我发送的参数的收费值。这就是为什么我需要WHERE子句,否则我错了?我的答案中的查询包含原始参数,这些参数是在预览时动态设置的。此更新的查询是否与原始查询产生相同的错误?不,它现在引发了另一个问题,非常感谢您的回答!