Вход | Регистрация

1С:Предприятие ::

Метки: 

v7: Как указать группировку в запросе

Я
   LisaAlisa
 
10.09.18 - 16:57
Добрый день!
Колонки таблицы:
МПЗ, Цена, ПозицияДокумента.
Как выбрать SQL-запросом МПЗ и ЦЕНУ по максимальному значению колонки "ПозицияДокумента"
 
 
   Sserj
 
1 - 10.09.18 - 17:30
select top 1 МПЗ,Цена FROM table ORDER BY ПозицияДокумента DESC
   LisaAlisa
 
2 - 10.09.18 - 20:03
(1) не подойдет, так как будет возвращена первая срока, а в таблице много МПЗ.
   Cool_Profi
 
3 - 10.09.18 - 20:05
select мпз, цена, max(ПозицияДокумента)
...
group by мпз, цена
   LisaAlisa
 
4 - 10.09.18 - 20:40
(3) Цена разная, группировка по ней не прокатит
   Sserj
 
5 - 11.09.18 - 05:06
(2) Ну просто не совсем понятная трактовка вопроса была.
Т.е. нужна последня цена всех МПЗ. Тогда получается так:

SELECT
  table.МПЗ, table.Цена, table.ПозицияДокумента
FROM
  table inner join
    (SELECT МПЗ,max(ПозицияДокумента) as Документ
    FROM table GROUP BY МПЗ) as МПЗДокумент
  ON (table.МПЗ = МПЗДокумент.МПЗ 
      and table.ПозицияДокумента = МПЗДокумент.Документ)
   Sserj
 
6 - 11.09.18 - 05:18
(4) А вот это кстати зависит от диалекта sql.
Если убрать из группировки Цена:

select мпз, цена, max(ПозицияДокумента)
from table
group by МПЗ

То SQL Server заругается на поле вне группировки. А к примеру Postgress или SQLite выдадут цену именно из строки которая вошла в агрегатную функцию, т.е. будет выдана цена именно максимальной позиции документа.
   trdm
 
7 - 11.09.18 - 05:28
(2) Все он правильно написал, это у вас задача криво сформулирована.
Выеживаешся тут..
   LisaAlisa
 
8 - 11.09.18 - 08:03
(5) Спасибо. Примерно так и сделала. Просто хотелось какое-то более краткое решение, так как сама таблица (мпз, цена, ПозицияДокумента) это результат нескольких запросов


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует