Sql 如何在不求和的情况下获取值?

Sql 如何在不求和的情况下获取值?,sql,oracle,oracle10g,Sql,Oracle,Oracle10g,我的输入如下 +----+-------+---------+----------+----+----+ | A | B | C | D | E | F | +----+-------+---------+----------+----+----+ | 3 | 32447 | 168531 | 2/2/2017 | 10 | 20 | | 4 | 32447 | 168531 | 2/3/2017 | 10 | 20 | | 14 | 32447

我的输入如下

+----+-------+---------+----------+----+----+
| A  | B     |    C    |  D       | E  | F  |
+----+-------+---------+----------+----+----+
| 3  | 32447 |  168531 | 2/2/2017 | 10 | 20 |
| 4  | 32447 |  168531 | 2/3/2017 | 10 | 20 |
| 14 | 32447 |  168531 | 2/6/2017 | 10 | 20 |
| 14 | 32447 |  168531 | 2/6/2017 | 10 | 20 |
| 12 | 32447 |  168531 | 2/7/2017 | 10 | 20 |
| 12 | 32447 |  168531 | 2/7/2017 | 10 | 20 |
| 12 | 32447 |  168531 | 2/7/2017 | 10 | 20 |
| 46 | 32447 |  168531 | 2/8/2017 | 10 | 20 |
| 46 | 32447 |  168531 | 2/8/2017 | 10 | 20 |
| 46 | 32447 |  168531 | 2/8/2017 | 10 | 20 |
| 85 | 32447 |  168531 | 2/9/2017 | 10 | 20 |
| 85 | 32447 |  168531 | 2/9/2017 | 10 | 20 |
| 85 | 32447 |  168531 | 2/9/2017 | 10 | 20 |
+----+-------+---------+----------+----+----+
我的预期输出如下

+----+-------+--------+----------+----+----+
| A  | B     | C      | D        | E  | F  |
+----+-------+--------+----------+----+----+
| 3  | 32447 | 168531 | 2/2/2017 | 10 | 20 |
| 4  | 32447 | 168531 | 2/3/2017 | 10 | 20 |
| 14 | 32447 | 168531 | 2/6/2017 | 20 | 40 |
| 12 | 32447 | 168531 | 2/7/2017 | 30 | 60 |
| 46 | 32447 | 168531 | 2/8/2017 | 30 | 60 |
| 85 | 32447 | 168531 | 2/9/2017 | 30 | 60 |
+----+-------+--------+----------+----+----+
我使用的是查询式

select b,c,d,sum(e),sum(f)
group by b,c,d

如何在没有最大值概念的情况下获取列值?谢谢。

求和
函数与
分组依据
子句一起使用

select max(a),b,c,d,sum(e),sum(f)
group by b,c,d
查询

select a, b, c, d, sum(e) e, sum(f) f
from your_table_name
group by a, b, c, d;

试试这个。。希望这对你有用

select a,b,c,d,sum(e),sum(f) FROM yourtable out_TB
WHERE A=(SELECT TOP 1 in_TA.A FROM yourtable in_TA WHERE in_TA.A=out_TB.A ORDER BY in_TA.A DESC)
group by a,b,c,d
使用不同的:

SELECT DISTINCT r.* FROM
(
   ...your query here...
 ) r
ORDER BY 1
/

您不能只在所选列中包含A,然后将其添加到“分组依据”列中。@BennjoeMordeno.但列是数字数据类型Numeric数据类型不应导致使用示例数据分组A的问题,将
A
添加到
分组依据
即可。为什么这对你不好?请发布一个示例,说明为什么通过
a
聚合不是满足您需要的解决方案。好的,但我正在尝试不使用MAX concept。您想要什么?例如,有2个A值3和4您想选择什么?4没有max函数?A列值总是唯一的,如以下12 32447 168531 2/7/2017 12 32447 168531 2/7/2017 12 32447 168531 2/7/2017从mytable组中按A、b、c、d、sum(e)、sum(f)选择A、b、c、d
SELECT DISTINCT r.* FROM
(
   ...your query here...
 ) r
ORDER BY 1
/