2016-01-06 70 views
0

我正在使用Birt Designer 4.4+和BIRT 3.2.23引擎。我將報告附加到SQLServer數據源,並完成了大部分報告。我有該報告的摘要部分它看起來像下面的部分...BIRT報告圖表數據集不匹配

Date Range | Category 1 | Category 2 
-------------------------------------- 
At Start | 203  | 19 
At End  | 111  | 29 
Open During | 23   | 04 

我需要創建一個餅圖來顯示1類與其他類(S)的%。我的問題是,BIRT餅圖只允許我根據特定列的左欄(日期範圍)顯示數據(例如,我可以將日期範圍與類別1進行比較。它不會讓您比較說 - 值在這個例子中,我只對日期範圍結束時的比較感興趣

我決定嘗試創建一個新的數據源,該數據源只查詢值的類型1,在結束」,但我留下一個SQL選擇類似於這樣..

Date Range | Category 1 | Category 2 
----------------------------------------- 
At End  | 101   | 29 

我想這掉在軸上,以類似於此...

Date Range | At End 
----------------------- 
Category 1 | 101 
Category 2 | 29 

我看了一下樞軸,但它似乎並不像我的具體情況,因爲我有類似於下面的查詢。有關這個主題的任何意見,我們感謝如果我不需要更改數據集,也可以在BIRT中找到任何解決方法。看起來它可能是BIRT後來版本中的一個選項,但遺憾的是我目前沒有更新的選項。

原始數據集

SELECT 
    SUM(
     CASE WHEN itc.category_id=1230 THEN 1 
     ELSE 0 END 
    ) AS cAtEnd, 
    SUM(
     CASE WHEN (itc.category_id=1233 OR itc.category_id=1234) THEN 1 
     ELSE 0 END 
    ) AS rAtEnd, 
    SUM(
     CASE WHEN (itc.category_id=1235 OR itc.category_id=1236) THEN 1 
     ELSE 0 END 
    ) AS aAtEnd 
FROM 
    i 
JOIN 
    itc ON itc.i_id=i.id AND itc.category_id IN (1230, 1233, 1234, 1235, 1236) 

我要指出,我縮短了SQL很大 - 所以,如果它看起來像缺了點什麼,很可能是因爲我把它剪(或更名爲簡單的/ etc )。雖然基本的想法仍然是一樣的。

除了 - 我的問題在本質上是在這裏發現的問題非常相似:https://www.eclipse.org/forums/index.php/t/62398/

回答

0

我最終找到一個更簡單的方法來創建期望的結果 - 請注意,我仍然有興趣在任何其他的解決方案,這(也許更短或者沒有儘可能多的問題)。

創建一個新的數據集,只需UNION ALL即可創建所需的行。由於我的數據集只涉及3行,所以不算太糟糕。

SELECT total, 'set one' FROM table 
UNION ALL 
SELECT total2, 'set two' FROM table2 

這將創建所需的SQL結果集,該結果集可以在BIRT報告上定期使用。

我真的希望我沒有理由過分複雜化。