• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите с запросом

  • Автор темы Allexei
  • Дата начала
A

Allexei

Здравствуйте форумчане, помогите с запросм разобраться. Есть запрос типа
Выбрать


|ВЫБРАТЬ
| РеквизитыВКарточке.Ссылка,
| ЗначенияСвойствОбъектов.Значение
|ИЗ
| РеквизитыВКарточке КАК РеквизитыВКарточке
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
| ПО РеквизитыВКарточке.Ссылка = ЗначенияСвойствОбъектов.Объект

Возвращает таблицу типа:
___________________
Ссылка1 | Значение1|
Ссылка1 |Значение2|
Ссылка1 | Значение3|
___________________

Можно ли как ни будь эту таблицу в самом запросе преобразовать в одну строку таблицы типа
_________________________________________
Ссылка1 | Значение1 | Значение2 | Значение3|
_________________________________________
 
A

Allexei

пока на ум приходит только использовать конструкцию Выбрать когда с последующей группировкой по полю ссылка. Может есть еще варианты?
 
U

unknown181538

А оно действительно сильно надо?
Неохота ща пример искать...
Помещаешь во временную таблицу, соединяешь ее саму с собой агрегируешь количество...


вот это читаем.
 
P

puh14

Это несколько противоречит логике скуля - фактически меняется список колонок запроса, да еще это может быть динамическим (количество записей не известно). То бишь подмена текста запроса. Если заложится например что берем первые пять записей - тогда можно придумать, но всё равно будет громоздко.
 
U

unknown181538

... ну получилось в общем-то...
 
P

puh14

Ну так это нумерация строк в запросе - а потом СКД это дело выводит. Если посмотреть на результаты запроса там будут только три колонки и усё.
 
U

unknown181538

Ну так это нумерация строк в запросе - а потом СКД это дело выводит. Если посмотреть на результаты запроса там будут только три колонки и усё.
Точно.... это не то
Но иначе я не вижу, зачем это нужно)
 
A

Allexei

Поскольку количество "ЗначениеN", конечно и заранее известно сделал через Выбрать когда..., потом сделал группировку по ссылка и Суммирование с функцией Макс по "Значение". Все получилось. Нужно было для вывода в СКД отчета по клиентам где "Значение" это значение из регистра "АдресаКонтрагента". Хотелось чтоб строкой шел контрагент а далее все его возможные адреса.Спасибо за советы.
 
P

puh14

Я вот тоже с утра столкнулся - только у меня надо было раскидать суммы по условиям ( в каждой колонке - свой интервал по датам). Решил через временную таблицу.

Собственно первый запрос сделал сырую таблицу и поместил её в времянку ( сразу в одном нельзя было - вложенные выборы не пахали)

Код:
ВЫБРАТЬ
Первая.Контрагент,
Первая.КонтрагентПредставление,
Первая.НомерНакладной,
Первая.ДатаНакладной,
Первая.СуммаКОплате,
Первая.ОтсрочкаПлатежа,
Первая.Проект,
Первая.ПроектПредставление,
Первая.Оплачено,
Первая.НеОплачено,
Первая.СрокОплаты,
Первая.ПросроченнаяЗадолженностьДни,
Первая.ПросроченнаяЗадолженностьСумма,
Первая.ОплатаДата,
Первая.Накладная,
Первая.СуммаДок,
Первая.ДокументДвижения,
ВЫБОР
КОГДА Первая.ПросроченнаяЗадолженностьДни < 15
ТОГДА Первая.ПросроченнаяЗадолженностьСумма
ИНАЧЕ 0
КОНЕЦ КАК ДБЗ15,
ВЫБОР
КОГДА Первая.ПросроченнаяЗадолженностьДни МЕЖДУ 15 И 30
ТОГДА Первая.ПросроченнаяЗадолженностьСумма
ИНАЧЕ 0
КОНЕЦ КАК ДБЗ30,
ВЫБОР
КОГДА Первая.ПросроченнаяЗадолженностьДни >30
ТОГДА Первая.ПросроченнаяЗадолженностьСумма
ИНАЧЕ 0
КОНЕЦ КАК ДБЗ30Плюс

собственно если кол-во записей известно, то никто не мешает делать условия на номер строчки ;-)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!