2017-03-27 74 views
0

我正在使用Microsoft動態GP,試圖獲取某些數據以顯示在SSRS中的列圖表中。以下是我開始使用的查詢如果出現系列表達式錯誤,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' +轉換(varchar(1),DATEPART(「QUARTER」,S.DOCDATE))

+0

如果您將這3個條件添加到此查詢中,您是否已經確認您確實獲得了結果? – StevenWhite

+0

是的,當我在SSMS中查詢時,我收到數據。我選擇不以這種方式格式化查詢,所以我可以更靈活地從一個查詢中構建多個圖表。 –

+0

聽起來像這只是你如何創建圖表的問題。確保您添加到圖表的「值」部分,而不僅僅是「系列組」。除此之外,我認爲我們需要更多關於報告設計的信息來確定哪些是錯誤的。 – StevenWhite

回答

0

在StevenWhite問了一些問題之後,它開始讓我對我的問題有不同的思考。
因此,只是依靠圖表我添加了一個表來顯示數據。它正在返回數據,但數據值爲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. 

做一些互聯網搜索後,這是由於Quantity中的返回數據類型而導致錯誤。所以我只更新了總和(if(...))表達式來返回一個CInt。這解決了這個問題。

更新表達式:

=SUM(iif(Fields!SOPTYPE.Value = 3 AND Fields!DOCID.Value = "INV" 
OR Fields!DOCID.Value = "RMAINV", CInt(Fields!QUANTITY.Value), 0)) 

但我還是不知道一個領域是如何返回不同的數據類型,除非我用了IIF的其他部分的0距離值不同的數據類型領域。

+0

您可以使用'Nothing'而不是0來避免數據類型問題。 – StevenWhite

+0

謝謝StevenWhite,那也解決了這個問題。 –