2016-08-08 57 views
0
╔═══╦════════════╦═════════════╗ 
║id ║ TV#  ║ Time  ║ 
╠═══╬════════════╬═════════════╣ 
║ 1 ║ TV1  ║ 0   ║ 
║ 2 ║ TV2  ║ 10   ║ 
║ 3 ║ TV3  ║ 0   ║ 
║ 4 ║ TV3  ║ 20   ║ 
║ 5 ║ TV3  ║ 21   ║ 
║...║ ...  ║ ...   ║ 
╚═══╩════════════╩═════════════╝ 

我想算元素的ID的數量,每個電視#,其中時間> 0 在這種情況下,我希望得到的結果是:BIRT報表 - 計數的次數是相匹配的標準

TV1-0; TV2 - 1; TV3 - 2

我正在使用BIRT報告,並且我嘗試了不同的方法來獲取此信息,但我無法獲得我想要的信息。

我已經嘗試了不同的方式,這是我使用的是什麼的時刻:

數據立方體,彙總字段(度量)

功能:計數

表達:措施[ 「ID」]

過濾:度量[ 「時間」]> 0

和Th恩我使用的聚合生成器:

功能:計數總和

表達:措施[ 「ID」]

篩選:度量[美國 「時代」]> 0

總結上:GroupTV#

當我使用計數,這是回訪:只有0和1(它給了我「1」電視#當至少有一次> 0 ),即TV1-0; TV2 - 1; TV3 - 1個

當我使用總和,此函數返回:每個TV#出現的次數在桌子上(當存在至少一個時間> 0對於該信道),即TV1 - 無輸出; TV2 - 1; TV3 - 3

有人能幫助我嗎?

+0

加油。嘗試一下。 – Strawberry

+0

@Strawberry - 有點不公平的評論,因爲blocnt描述了他已經嘗試過的兩件事,並解釋了他們未能獲得所需結果。 – PaulF

回答

0

代替在數據立方體上或在交叉表或圖表上使用過濾器,只需對數據集進行過濾即可。

0

例如爲:

SELECT tv 
    , SUM(CASE WHEN time > 0 THEN 1 ELSE 0 END) x 
    FROM my_table 
GROUP 
    BY tv; 
+0

謝謝,那個結構應該用在哪裏?作爲過濾器? – blocnt

+0

這與mysql標記有關。我對Birt一無所知 – Strawberry

0

無論哪種方法應該工作,但是在你的榜樣,你就指望一個特定的ID,而不是「電視#」的出現。 當然,由於ID的唯一性,每個事件最多隻會出現一次。

您需要:

功能:計數

表達:從 'ID' 更改爲 '電視#'

篩選:度量[美國 「時代」]> 0

+0

這不起作用。它只給了我「1」或「0」(當時間> 0時它能正確識別,但不會發生多少次) – blocnt