前提:我们有一个包含5个字段的表格。 2个字段始终是唯一的。
实现这一目标的好方法是什么:
if(count_of_result == 3){ 从同一个表中添加3行。独特的价值加起来&对于所有3行,假定非唯一值相同。 查询结果应显示1行,并添加值。 } 其他 {
照常显示查询的所有结果。
}
谢谢。
答案 0 :(得分:0)
select a, b, c, sum(d), sum(e) from (
select a, b, c,
case count(*) over(partition by a, b, c)
when 3 then null else rownum end as group_controller
from tableT
) group by a, b, c, group_controller;
我认为这应该有效。内联视图中包含的分析函数确定组中是否只有3行(没有聚合)。外部查询的group by要求do_group在应该执行分组的情况下为空(或任何常量值)(因此推迟到& b进行分组),或者在分组应该被中和时的唯一值(rownum将很好地在这种情况)。
答案 1 :(得分:0)
可能有更有效的方法:
SELECT a,b,c, SUM(d) AS d, SUM(e) AS e
FROM tableT
WHERE (SELECT COUNT(*) FROM tableT) <= 3
GROUP BY a,b,c
UNION ALL
SELECT a,b,c,d,e
FROM tableT
WHERE (SELECT COUNT(*) FROM tableT) > 3
;