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


我想计算每个TV#的元素ID数量,该时间> 0。
在这种情况下,我希望结果是:

TV1-0; TV2-1; TV3-2

我正在使用BIRT报告,并且尝试了多种方法来获得此结果,但我无法获得想要的结果。

我尝试了不同的方法,这就是我目前正在使用的方法:

数据多维数据集,摘要字段(度量)

功能:计数

表达式:measure [“ id”]

过滤条件:小节[“时间”]> 0

然后,我正在使用聚合生成器:

功能:计数或总和

表达式:measure [“ id”]

过滤条件:小节[“时间”]> 0

汇总在:GroupTV#

当我使用count时,返回的是:仅0和1(当至少有一个Time> 0时,它给TV#我“ 1”),即TV1-0; TV2-1; TV3-1

当我使用sum时,将返回:每个TV#出现在表上的次数(当该频道至少有一个Time> 0时),即TV1-无输出; TV2-1; TV3-3

有人能帮我吗?

最佳答案

例如。:

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

07-27 13:50