Имя: Пароль:
1C
 
Как выбрать N первый ПТУ в запросе
,
0 Hipocrisy2013
 
03.07.19
14:36
Есть список номенклатуры, как запросом выбрать последние N ПТУ по этим позициям?
1 Ёпрст
 
03.07.19
14:37
top N ... order by ask
2 Hipocrisy2013
 
03.07.19
14:38
как понять топ?
3 Ёпрст
 
03.07.19
14:40
(2)
https://docs.microsoft.com/ru-RU/sql/t-sql/queries/top-transact-sql?view=aps-pdw-2016

ну или Выбрать Первые, если не знаком с англ. синтаксисом
4 Hipocrisy2013
 
03.07.19
14:41
Допустим у меня есть запрос который выдает:

А  Ссылка1
А  Ссылка2
А  Ссылка3
С  Ссылка4
С  Ссылка5
С  Ссылка6

как мне сделать чтобы получилось

А Ссылка1
А Ссылка2
С Ссылка4
С Ссылка5
5 sqr4
 
03.07.19
14:42
Выбрать первые 4
6 sqr4
 
03.07.19
14:42
а не
7 Ёпрст
 
03.07.19
14:44
(4) по какому признаку надо исключить А  Ссылка3 и С  Ссылка6 ?
для каждого А или С оставить первые 2 ? Так что ле ?
8 sqr4
 
03.07.19
14:45
9 sqr4
 
03.07.19
14:45
вот так короче
10 Hipocrisy2013
 
03.07.19
14:46
(7) да
11 Hipocrisy2013
 
03.07.19
14:47
(9) я читал эту статью, я не особо понял как юзать счетчик
12 sqr4
 
03.07.19
14:47
че млять
13 sqr4
 
03.07.19
14:47
ВЫБРАТЬ
   ПоступлениеТоваровУслуг.Контрагент КАК Контрагент,
   ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
   КОЛИЧЕСТВО(ПоступлениеТоваровУслуг_1.Ссылка) КАК Номер
ИЗ
   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг_1
       ПО ПоступлениеТоваровУслуг.Дата <= ПоступлениеТоваровУслуг_1.Дата
           И ПоступлениеТоваровУслуг.Контрагент = ПоступлениеТоваровУслуг_1.Контрагент

СГРУППИРОВАТЬ ПО
   ПоступлениеТоваровУслуг.Ссылка,
   ПоступлениеТоваровУслуг.Контрагент

ИМЕЮЩИЕ
   КОЛИЧЕСТВО(ПоступлениеТоваровУслуг_1.Ссылка) <= 5

УПОРЯДОЧИТЬ ПО
   Контрагент,
   Номер
14 sqr4
 
03.07.19
14:48
Че тут неясного?
15 sqr4
 
03.07.19
14:49
а не, это я туплю
16 novichok79
 
03.07.19
15:01
вот тут только первые будут

ВЫБРАТЬ
   Т.Номенклатура КАК Номенклатура,
   МАКСИМУМ(ПоступлениеТоваровУслуг.Ссылка) КАК ПоследнееПТУ
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК Т

СГРУППИРОВАТЬ ПО
   Т.Номенклатура
17 novichok79
 
03.07.19
15:04
сразу приходят на ум похожие запросы в которых выбираешь максимум(ссылка), но чтобы это максимальное ПТУ по позиции не было равно уже найденному последнему документу, потом соединяешь запросы через "объединить"
но это костыльный способ такой.
18 sqr4
 
03.07.19
15:05
(17) в (13) уже готовое решение, что вы тупите
19 bolobol
 
03.07.19
15:07
(18) теперь ещё и повторить (15))))))
20 novichok79
 
03.07.19
15:17
(18) ты глупый что-ли? твой запрос сначала отработает соединение, и будет брать документы в том порядке, как они в таблице SQL лежат, а потом будет сортировать записи по количеству документов. проверь на реальной базе, а мы посмеемся.
в итоге у тебя может получиться такое.

Приобретение товаров и услуг ЖП00-000427 от 31.03.2018 15:59:05    1
Приобретение товаров и услуг ЖП00-000426 от 28.02.2018 15:49:36    2
Приобретение товаров и услуг ЖП00-000239 от 31.01.2018 12:53:41    3
Приобретение товаров и услуг ЖП00-000238 от 01.01.2018 12:51:53    4
Приобретение товаров и услуг ЖП00-000237 от 01.01.2018 12:49:12    5
21 sqr4
 
03.07.19
15:22
(20) не тупее некоторых, еще раз прочитай запрос, потом еще и еще пока не придет просветление
22 sqr4
 
03.07.19
15:23
(20) и да запрос не мой
23 novichok79
 
03.07.19
15:23
(21) ко-ко-ко
24 novichok79
 
03.07.19
15:24
если хронологический порядок ПТУ в запросе не соблюдается, зачем пользаку такие данные?
25 sqr4
 
03.07.19
15:27
(23) 32х-летний петушок... Я постоянно разочаровываюсь, когда вижу такое поведение у взрослых мужиков.
(24) В приведенном мной запросе как раз выведутся последние данные по дате, а вот брать максимум по ссылке, это да, умный ход
26 novichok79
 
03.07.19
15:29
(25) ааххаха, ок, давай по-твоему. петух твой батя.
(25) ага, я то на реальных данных посмотрел. но если тебе хочется спорить, то делай это наздоровье.
27 sqr4
 
03.07.19
15:33
(26) я вот этого (23) не писал, это написал ты, отсюда и вывод из (25) На чем основам твой вывод.
А это так для общего тебе развития, может перестанешь людей оскарблять http://catalog.mista.ru/public/635159/
28 ptiz
 
03.07.19
15:36
Как пример (но это если товар встречался по 1 разу в накладной):

ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Номенклатура,
    ПоступлениеТоваровТовары1.Ссылка КАК ПоступлениеТоваров
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары1
        ПО (ПоступлениеТоваровТовары1.Номенклатура = СпрНоменклатура.Ссылка)
            И (ПоступлениеТоваровТовары1.Ссылка В
                (ВЫБРАТЬ ПЕРВЫЕ 3
                    ПоступлениеТоваровТовары.Ссылка КАК ПоступлениеТоваров
                ИЗ
                    Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
                ГДЕ
                    ПоступлениеТоваровТовары.Номенклатура = ПоступлениеТоваровТовары1.Номенклатура
                УПОРЯДОЧИТЬ ПО
                    ПоступлениеТоваровТовары.Ссылка.Дата УБЫВ))
ГДЕ
    СпрНоменклатура.Ссылка В(&МассивТоваров)
29 novichok79
 
03.07.19
15:40
(27) ок, просто свой запрос ты не проверил. да, максимум по ссылке - неправильно. правильнее в (28)
30 timurhv
 
03.07.19
15:46
(0) На кой вы пытаетесь со своей больной фантазией писать запросы?
Обрабатывайте в коде.
31 timurhv
 
03.07.19
15:51
(28) Не пишите больше запросы, это не ваше
32 sqr4
 
03.07.19
15:53
(29) дада правильние, куда уж там и более читаемое)
33 novichok79
 
03.07.19
15:58
(32) это единственный способ без максимумов решить задачу, по-моему.
34 sqr4
 
03.07.19
16:02
(33) чем отличается определение максимума от сортировки, гений ты наш 32х-летний?
35 sqr4
 
03.07.19
16:03
и где в (13) ты видишь максимумы???
36 sqr4
 
03.07.19
16:05
Хотя, вероятнее всего, не буду утверждать наверняка, что пример (28) работает быстрее, чем соединение таблицы с собой полностью. Но не уверен
37 novichok79
 
03.07.19
16:09
(34) на уровне СУБД, системе все равно придется искать максимальное значение.
(35) тут имеются в виду, функции агрегации, ок.
(36) ну что ж, 25-летний вундеркинд, давай замеры в студию.
38 sqr4
 
03.07.19
16:11
(37) я решение привел, в отличие от некоторых. А дальше если ТСу надо пусть мерит.
39 novichok79
 
03.07.19
16:15
(38) решение которое не учитывает хронологию такое себе, смотри (24). по мне нормально будет и (28) на небольших данных
40 sqr4
 
03.07.19
17:41
(39) решение из (13)  все учитывает... ну имеет смысл вместо сортировки по номеру добавить сортировку по дате. В любом случае лучше твоего гораздо)
41 novichok79
 
03.07.19
17:55
(40) по дате это так?

ВЫБРАТЬ
    Т.Контрагент КАК Контрагент,
    Т.Ссылка КАК Ссылка,
    Т.Дата КАК Дата,
    КОЛИЧЕСТВО(Т1.Ссылка) КАК Номер
ИЗ
    Документ.ПриобретениеТоваровУслуг КАК Т
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг КАК Т1
        ПО (Т.Дата <= Т1.Дата)
            И (Т.Контрагент = Т1.Контрагент)

СГРУППИРОВАТЬ ПО
    Т.Ссылка,
    Т.Контрагент,
    Т.Дата

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Т1.Ссылка) <= 5

УПОРЯДОЧИТЬ ПО
    Контрагент,
    Дата
АВТОУПОРЯДОЧИВАНИЕ
42 novichok79
 
03.07.19
17:59
если да, то
5-й по счету
Приобретение товаров и услуг от 07.06.2018 15:27:14
1-й по счету
Приобретение товаров и услуг от 18.07.2018 23:59:59
3-е по счету
Приобретение товаров и услуг от 25.06.2018 16:31:59

а это будет неправильный результат.