我有一个名为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日期不同。有什么办法可以做到这一点。谢谢。
答案 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;