我正在处理下表:
**ID Value Data**
1 30 25/4
1 20 26/4
1 20 27/4
3 10 25/4
4 20 26/4
5 30 26/4
我需要查询表并得到下一个结果:
**ID Value Data**
1 70 "Any value, can be 25/4, 26/4 or 27/4"
3 10 25/4
4 20 26/4
5 30 26/4
我尝试使用GroupBy查询,但是如果添加所有字段(ID,值和数据),结果将返回第一个表。而且,如果我仅使用GroupBy字段ID,则遇到下一个错误:
ORA-00979:不是GROUP BY表达式
有人可以帮忙吗?
答案 0 :(得分:2)
我们可以任意选择每个Data
组中的最小ID
值:
SELECT ID, SUM(Value) AS Value, MIN(Data) AS Data
FROM yourTable
GROUP BY ID;
答案 1 :(得分:0)
只需使用min()
或max()
:
select id, sum(value), min(data)
from t
group by id;
如果您实际上想要一个随机值,则可以使用:
select id, sum(value),
min(data) keep (dense_rank first order by dbms_random.random)
from t
group by id;