基于条件计数的SQL查询(可包括pl / sql位)

时间:2011-03-15 07:17:11

标签: mysql sql plsql

前提:我们有一个包含5个字段的表格。 2个字段始终是唯一的。

实现这一目标的好方法是什么:

if(count_of_result == 3){   从同一个表中添加3行。独特的价值加起来&对于所有3行,假定非唯一值相同。   查询结果应显示1行,并添加值。 } 其他 {

照常显示查询的所有结果。

}

谢谢。

2 个答案:

答案 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
;