Reporting services SSRS和if序列表达式错误

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 '

我正在与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))
当我预览报告时,图表中没有数据。对于图表,我只是使用柱状图。有什么想法吗

其他信息: 为了澄清我的上述声明。所使用的表达式用于图表数据中的值。在设计模式中右键单击列时,可以选择“系列属性”

链接到图表上我正在处理的数据点的图片

用于确认表达式的查询:

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来避免数据类型问题。