╔═══╦════════════╦═════════════╗
║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;