选择通用值并添加它们SQL

时间:2019-01-10 03:44:17

标签: sql oracle11g

我有一个名为Test的表。它具有三列Fn(varchar),Un(number),INS(date)。我想做的是从表中选择所有行,并获取Fn列中公用值的总和。

示例

     Fn Un     INS
     ---------------
     1   6   9-Jan-2017
     2   8   9-Jan-2017
     1   5   4-Jan-2017`

我正在尝试基于Fn列求和,以得到通用值

Fn Un 
1   11

我试图了解如何在Oracle中使用CASE IF ELSE。但是无法添加它们,因为两者的INS日期不同。有什么办法可以做到这一点。谢谢。

3 个答案:

答案 0 :(得分:1)

我认为您需要按以下方式分组:

select fn, sum(un) as total
from t
group by fn
order by total desc;

您可以在带有Aggregate functions的sql中使用group by(平均,总和,最大,最小)。 https://en.wikipedia.org/wiki/Aggregate_function

答案 1 :(得分:0)

您似乎想要group by

select fn, sum(un)
from t
group by fn
having count(*) >= 2;

答案 2 :(得分:0)

尝试使用INS列的LISTAGG函数

     SELECT Fn, SUM(Un) as Total, LISTAGG(INS, '; ') WITHIN GROUP (ORDER BY Fn) as INSs
     FROM T
     GROUP BY Fn
     ORDER BY Total DESC;