|
Как выбрать 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 а это будет неправильный результат. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |