如果系列表达式错误,SSRS总和
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果系列表达式错误,SSRS总和相关的知识,希望对你有一定的参考价值。
我正在使用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 '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))
当我预览报表时,图表中没有数据。对于图表我只是使用柱形图。有任何想法吗?
附加信息:澄清我的上述陈述。使用的表达式用于图表数据中的值。当我在设计模式中右键单击列时,我可以选择选择系列属性。
链接到我在图表上使用的数据点的图片。 Chart Image
用于确认表达式的查询:
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))
编辑:格式代码
答案
在StevenWhite问了一些问题后,它开始让我对我的问题有不同的看法。 因此,仅仅依靠图表我添加了一个表来显示数据。它返回数据,但数据值为0.因此我没有在我的图表上返回任何值。我错误地认为没有价值,但是有一个零值。
在那之后,我分解了总和(if(...))表达式。事实证明,当我使用时
=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.
在进行一些互联网搜索之后,由于数量中的返回数据类型而出现错误。所以我刚刚更新了sum(if(...))表达式以返回CInt。这解决了这个问题。
更新的表达式
=SUM(iif(Fields!SOPTYPE.Value = 3 AND Fields!DOCID.Value = "INV"
OR Fields!DOCID.Value = "RMAINV", CInt(Fields!QUANTITY.Value), 0))
但是我仍然不确定一个字段如何返回不同的数据类型,除非我用于iif的else部分的0是与value字段不同的数据类型。
以上是关于如果系列表达式错误,SSRS总和的主要内容,如果未能解决你的问题,请参考以下文章