Я работаю со следующей таблицей:
**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, но если добавить все поля (идентификатор, значение и данные), результат возвращает 1-ю таблицу. И, если я использую только идентификатор поля GroupBy, у меня возникает следующая ошибка:
ORA-00979: не выражение GROUP BY
Может ли кто-нибудь помочь о том, как это сделать?
Мы могли бы произвольно взять минимальное значение Data
в каждой группе ID
:
SELECT ID, SUM(Value) AS Value, MIN(Data) AS Data
FROM yourTable
GROUP BY ID;
Просто используйте 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;
@ Рене Фонтан. . . Вы можете добавить where id is not null
.
Гордон, я хочу показать нулевой идентификатор, но не хочу их суммировать.
@ Рене Фонтан. . . Если sum(case when id is not null then value end)
не отвечает на вопрос, вы должны задать его как новый вопрос с соответствующими данными образца и желаемыми результатами.
Хорошо, откройте новый вопрос здесь stackoverflow.com/questions/56345735/…
Спасибо. Если у меня есть нулевой идентификатор, запрос суммирует значения. Как я могу этого избежать?