0

我正在使用 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))

编辑:格式代码

4

1 回答 1

1

在 StevenWhite 问了一些问题之后,我开始对自己的问题有了不同的想法。
因此,我仅依靠图表添加了一个表格来显示数据。它正在返回数据,但数据值为 0。因此我的图表上没有返回任何值。我犯了一个错误,假设没有价值,但价值为零。

之后,我分解了 sum(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.  

在进行一些互联网搜索后,由于 Quantity 中的返回数据类型而出现错误。所以我刚刚更新了 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 字段不同的数据类型。

于 2017-03-27T21:25:21.137 回答