Reporting services SSRS和if序列表达式错误
我正在与Microsoft dynamics GP合作,试图获取一些数据,以便在SSRS的柱状图中显示。下面是我开始使用的查询Reporting services SSRS和if序列表达式错误,reporting-services,expression,microsoft-dynamics,gp,Reporting Services,Expression,Microsoft Dynamics,Gp,我正在与Microsoft dynamics GP合作,试图获取一些数据,以便在SSRS的柱状图中显示。下面是我开始使用的查询 SELECT RTRIM(S.CUSTNMBR) 'Customer ID', RTRIM(C.CUSTNAME) 'Customer Name', S.SOPTYPE, CONVERT(varchar(4), YEAR(S.DOCDATE)) +' Q'+ convert(varchar(1), DATEPART("QUARTER",S.DOCDATE)) AS '
SELECT RTRIM(S.CUSTNMBR) 'Customer ID', RTRIM(C.CUSTNAME) 'Customer Name', S.SOPTYPE,
CONVERT(varchar(4), YEAR(S.DOCDATE)) +' Q'+ convert(varchar(1), DATEPART("QUARTER",S.DOCDATE)) AS 'YEAR QUARTER',
S.DOCDATE, S.DOCID,SL.QUANTITY
FROM SOP30200 S INNER JOIN SOP30300 SL ON S.SOPNUMBE = SL.SOPNUMBE
INNER JOIN IV00101 IV ON SL.ITEMNMBR = IV.ITEMNMBR
INNER JOIN RM00101 C ON S.CUSTNMBR = C.CUSTNMBR
WHERE S.VOIDSTTS = 0 AND IV.ITMCLSCD NOT IN ('NON INV','TRAINING','LABOR')
在SSRS中的系列属性中,我在值字段中添加了以下内容
=SUM(iif(Fields!SOPTYPE.Value = 3 AND Fields!DOCID.Value = "INV"
OR Fields!DOCID.Value = "RMAINV", Fields!QUANTITY.Value, 0))
当我预览报告时,图表中没有数据。对于图表,我只是使用柱状图。有什么想法吗
其他信息:
为了澄清我的上述声明。所使用的表达式用于图表数据中的值。在设计模式中右键单击列时,可以选择“系列属性”
链接到图表上我正在处理的数据点的图片
用于确认表达式的查询:
SELECT RTRIM(S.CUSTNMBR) 'Customer ID', RTRIM(C.CUSTNAME) 'Customer Name', CONVERT(varchar(4), YEAR(S.DOCDATE)) +' Q'+ convert(varchar(1), DATEPART("QUARTER",S.DOCDATE)) AS 'YEAR QUARTER',
SUM(iif(S.SOPTYPE = 3 AND S.DOCID = 'INV' OR S.DOCID = 'RMAINV', SL.QUANTITY, 0)) 'QUANTITY'
FROM SOP30200 S INNER JOIN SOP30300 SL ON S.SOPNUMBE = SL.SOPNUMBE
INNER JOIN IV00101 IV ON SL.ITEMNMBR = IV.ITEMNMBR
INNER JOIN RM00101 C ON S.CUSTNMBR = C.CUSTNMBR
WHERE S.VOIDSTTS = 0 AND IV.ITMCLSCD NOT IN ('NON INV','TRAINING','LABOR')
GROUP BY S.CUSTNMBR, C.CUSTNAME, CONVERT(varchar(4),YEAR(S.DOCDATE)) +' Q'+ convert(varchar(1), DATEPART("QUARTER",S.DOCDATE))
=SUM(iif(Fields!SOPTYPE.Value = 3 AND Fields!DOCID.Value = "INV"
OR Fields!DOCID.Value = "RMAINV", CInt(Fields!QUANTITY.Value), 0))
编辑:格式代码史蒂文怀特问了一些问题后,我开始以不同的方式思考我的问题。
因此,我仅仅依靠图表添加了一个表格来显示数据。它正在返回数据,但数据值为0。因此,我的图表上没有返回任何值。我犯了一个错误,认为没有价值,但有一个零的价值 之后,我分解了sum(if(…)表达式。结果是当我使用
=SUM(iif(Fields!SOPTYPE.Value = 3, Fields!QUANTITY.Value, 0))
=SUM(iif(Fields!DOCID.Value = "INV", Fields!QUANTITY.Value, 0))
我收到了数据,但当我使用
=SUM(iif(Fields!SOPTYPE.Value = 3, Fields!QUANTITY.Value, 0))
=SUM(iif(Fields!DOCID.Value = "INV", Fields!QUANTITY.Value, 0))
我收到一条警告信息:
Severity Code Description Project File Line Suppression State
Warning [rsAggregateOfMixedDataTypes] The Y expression for the chart ‘Chart7’
uses an aggregate function on data of varying data types. Aggregate functions other than
First, Last, Previous, Count, and CountDistinct can only aggregate data of a single data type.
在进行了一些internet搜索后,由于返回的数据类型为Quantity,因此出现了一个错误。所以我只是更新了sum(if(…)表达式以返回一个CInt。这就解决了问题
更新的表达:
SELECT RTRIM(S.CUSTNMBR) 'Customer ID', RTRIM(C.CUSTNAME) 'Customer Name', CONVERT(varchar(4), YEAR(S.DOCDATE)) +' Q'+ convert(varchar(1), DATEPART("QUARTER",S.DOCDATE)) AS 'YEAR QUARTER',
SUM(iif(S.SOPTYPE = 3 AND S.DOCID = 'INV' OR S.DOCID = 'RMAINV', SL.QUANTITY, 0)) 'QUANTITY'
FROM SOP30200 S INNER JOIN SOP30300 SL ON S.SOPNUMBE = SL.SOPNUMBE
INNER JOIN IV00101 IV ON SL.ITEMNMBR = IV.ITEMNMBR
INNER JOIN RM00101 C ON S.CUSTNMBR = C.CUSTNMBR
WHERE S.VOIDSTTS = 0 AND IV.ITMCLSCD NOT IN ('NON INV','TRAINING','LABOR')
GROUP BY S.CUSTNMBR, C.CUSTNAME, CONVERT(varchar(4),YEAR(S.DOCDATE)) +' Q'+ convert(varchar(1), DATEPART("QUARTER",S.DOCDATE))
=SUM(iif(Fields!SOPTYPE.Value = 3 AND Fields!DOCID.Value = "INV"
OR Fields!DOCID.Value = "RMAINV", CInt(Fields!QUANTITY.Value), 0))
但我仍然不确定一个字段是如何返回不同的数据类型的,除非我用于iif的else部分的0是与值字段不同的数据类型 您是否已经确认,如果将这3个条件添加到此查询中,您确实会得到结果?是的,当我在SSMS中查询时,我会收到数据。我选择不以这种方式设置查询的格式,因此我可以更灵活地从一个查询构建多个图表。听起来这只是您如何创建图表的问题。确保添加到图表的
值
部分,而不仅仅是系列组
。除此之外,我认为我们需要更多关于报告设计的信息来确定问题所在。史蒂文怀特,我更新了原始帖子,进一步解释了我自己。希望有助于澄清一些事情。在这一点上,设计非常简单。这只是一个查询,试图让查询显示基于我已格式化为一列的年份和季度的数据。显示一些销售数量,并在图表中按年度和季度进行分组。我不明白为什么表达式在sql查询中显示时不返回任何值。可以使用Nothing
而不是0来避免数据类型问题。