|
Запрос с параметром СписокЗначений | ☑ | ||
---|---|---|---|---|
0
КРТЩ
05.06.12
✎
15:08
|
Запрос на СКД, в параметре СписокЗначений, как в запросе получить каждое значение списка?
есть ли аналог обхода списка в цикле на языке запроса? |
|||
1
Нуф-Нуф
05.06.12
✎
15:09
|
зачем? о_0
|
|||
2
КРТЩ
05.06.12
✎
15:13
|
Есть отчет с колонками типа "Группа1", "Группа2", "Группа3", в которых зашиты предопределенные сегменты по каналам продаж. А теперь сегментов развелось немеряно, и пользователи хотят выбирать список сегментов а в отчете видеть продажи по направлениям, где колонки = список выбранных сегментов, каждый сегмент в своей колонке
|
|||
3
Нуф-Нуф
05.06.12
✎
15:15
|
и? как тебе твой вопрос из сабжа поможет решить задачу?
|
|||
4
КРТЩ
05.06.12
✎
15:19
|
думала что как то так:
ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.Группа = &СписокГрупп[0].Значение ТОГДА ПолнаяТаблицаПродажСегмент.СуммаОборот ИНАЧЕ NULL КОНЕЦ интересуюсь можно ли в запросе получать СписокГрупп[0].Значение |
|||
5
experimentator76
05.06.12
✎
15:21
|
(4) это точно восьмерка ?
это точно запрос ? |
|||
6
experimentator76
05.06.12
✎
15:23
|
может В(&СписокГрупп) подойдет ?
а вообще есть стойкое ощущения что запрос надо переписать |
|||
7
experimentator76
05.06.12
✎
15:24
|
то есть проверку поставить в условие ГДЕ и лишнее игнорить
|
|||
8
Нуф-Нуф
05.06.12
✎
15:25
|
имхо список параметров передавать в виде параметра-таблицы значений, засовывать результат во временную таблицу и с ней уже соединять твой запрос
|
|||
9
experimentator76
05.06.12
✎
15:33
|
(8) не знаю
я как жадный одинэсник не трачу время на создание временной таблицы если в списке немного значений и критерий отбора одноключевой вот если критериев несколько и строк моного - тогда да |
|||
10
КРТЩ
05.06.12
✎
15:33
|
вот кусок кода
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ПолнаяТаблицаПродаж.Область КАК Область, ПолнаяТаблицаПродаж.Район, ПолнаяТаблицаПродаж.Город, ПолнаяТаблицаПродаж.Адрес, ПолнаяТаблицаПродаж.Контрагент, АналитикаТА.Сегмент, ПолнаяТаблицаПродаж.Родитель КАК Родитель, МАКСИМУМ(ПолнаяТаблицаПродаж.СуммаОборот) КАК СуммаОборот ПОМЕСТИТЬ ПолнаяТаблицаПродажСегмент ИЗ ПолнаяТаблицаПродаж КАК ПолнаяТаблицаПродаж ЛЕВОЕ СОЕДИНЕНИЕ АналитикаТА КАК АналитикаТА ПО ПолнаяТаблицаПродаж.ТорговыйАгент = АналитикаТА.ТорговыйАгент СГРУППИРОВАТЬ ПО ПолнаяТаблицаПродаж.Родитель, ПолнаяТаблицаПродаж.Область, ПолнаяТаблицаПродаж.Район, ПолнаяТаблицаПродаж.Город, ПолнаяТаблицаПродаж.Адрес, АналитикаТА.Сегмент, ПолнаяТаблицаПродаж.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ПолнаяТаблицаПродажСегмент.Область, ПолнаяТаблицаПродажСегмент.Район, ПолнаяТаблицаПродажСегмент.Город, ПолнаяТаблицаПродажСегмент.Адрес, ПолнаяТаблицаПродажСегмент.Контрагент, ПолнаяТаблицаПродажСегмент.Сегмент, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.Сегмент = &СегментОбщийПрайс И НЕ ПолнаяТаблицаПродажСегмент.Родитель В (&СписокГрупп) ТОГДА ПолнаяТаблицаПродажСегмент.СуммаОборот КОНЕЦ) КАК СегментОбщийПрайс, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.Сегмент <> &СегментОбщийПрайс И НЕ ПолнаяТаблицаПродажСегмент.Родитель В (&СписокГрупп) ТОГДА ПолнаяТаблицаПродажСегмент.СуммаОборот КОНЕЦ) КАК Остальные, ПолнаяТаблицаПродажСегмент.Родитель, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.Родитель = &Группа1 ТОГДА ПолнаяТаблицаПродажСегмент.СуммаОборот КОНЕЦ) КАК Группа1, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.Родитель = &Группа2 ТОГДА ПолнаяТаблицаПродажСегмент.СуммаОборот КОНЕЦ) КАК Группа2, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.Родитель = &Группа3 ТОГДА ПолнаяТаблицаПродажСегмент.СуммаОборот КОНЕЦ) КАК Группа3 ИЗ ПолнаяТаблицаПродажСегмент КАК ПолнаяТаблицаПродажСегмент СГРУППИРОВАТЬ ПО ПолнаяТаблицаПродажСегмент.Область, ПолнаяТаблицаПродажСегмент.Район, ПолнаяТаблицаПродажСегмент.Город, ПолнаяТаблицаПродажСегмент.Адрес, ПолнаяТаблицаПродажСегмент.Контрагент, ПолнаяТаблицаПродажСегмент.Родитель |
|||
11
КРТЩ
05.06.12
✎
15:35
|
а теперь надо чтобы не Группа1, группа2 и группа3, а список значений групп, которых может быть 100500, и на каждую группу выводить отдельную колонку.
|
|||
12
experimentator76
05.06.12
✎
15:37
|
(11) ну как бы ограничивается тем что в запрос все равно поля создавать надо
либо я чего то про СКД такого не знаю |
|||
13
experimentator76
05.06.12
✎
15:38
|
если бы самописный отчет то можно было бы развернуть колонки как строки и повернуть обратно при выводе отчета
|
|||
14
КРТЩ
05.06.12
✎
15:40
|
если бы самописный. а тут шаблон и в нем надо делать. колонки грппа1, группа2, ..... группаN = &СписокГрупп
ума не проложу как его развернуть в запрос |
|||
15
experimentator76
05.06.12
✎
15:40
|
(10) добавь в запрос
ГДЕ ПолнаяТаблицаПродажСегмент.Родитель В(&СписокГрупп) по лишним колонкам не будет данных и наверное в СКД можно эти колонки не выводить по этому условию я в СКД не силен |
|||
16
experimentator76
05.06.12
✎
15:44
|
вообще обычно разрезы такого вида обычно разворачивают вниз а не вправо
запрос бы переписать вообще) |
|||
17
КРТЩ
05.06.12
✎
15:52
|
нельзя добавлять - потому что сначала надо вывести две колонки вот такие:
ГДЕ НЕ ПолнаяТаблицаПродажСегмент.Родитель В(&СписокГрупп) т.е. вывести все остальное по предопределенным направлениям, а потом по выбранным в СЗ группам. естественно было бы круто разворачивать вниз, не надо возиться, но увы.... |
|||
18
experimentator76
05.06.12
✎
18:00
|
(17) ну как говорится ответ стандартный
измени бизнес ) |
|||
19
hhhh
05.06.12
✎
18:13
|
(17) ИМХО просто выводи в ПолнаяТаблицаПродажСегмент.Родитель в группировку колонок в СКД. Что ты бред какой-то выдумываешь?
|
|||
20
КРТЩ
06.06.12
✎
11:58
|
(19) а условие в запросе как по ним сделать?
|
|||
21
hhhh
06.06.12
✎
12:06
|
(20) зачем условие в запросе. В настройках отчета вводишь группировку колонок каку тебя этот родитель там называется и всё.
|
|||
22
КРТЩ
06.06.12
✎
12:24
|
Есть отчет на скд, там несколько запросов формируют временную таблицу. Есть 4 динамических параметра по которым строится отчет.
вот код: ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ПолнаяТаблицаПродажСегмент.Область, ПолнаяТаблицаПродажСегмент.Район, ПолнаяТаблицаПродажСегмент.Город, ПолнаяТаблицаПродажСегмент.Адрес, ПолнаяТаблицаПродажСегмент.Контрагент, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.Сегмент = &СегментОбщийПрайс И НЕ ПолнаяТаблицаПродажСегмент.Родитель = &Группа1 И НЕ ПолнаяТаблицаПродажСегмент.Родитель = &Группа2 И НЕ ПолнаяТаблицаПродажСегмент.Родитель = &Группа3 И НЕ ПолнаяТаблицаПродажСегмент.Родитель = &Группа4 ТОГДА ПолнаяТаблицаПродажСегмент.ДатаПродажи КОНЕЦ) КАК СегментОбщийПрайс, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.Сегмент <> &СегментОбщийПрайс И НЕ ПолнаяТаблицаПродажСегмент.Родитель = &Группа1 И НЕ ПолнаяТаблицаПродажСегмент.Родитель = &Группа2 И НЕ ПолнаяТаблицаПродажСегмент.Родитель = &Группа3 И НЕ ПолнаяТаблицаПродажСегмент.Родитель = &Группа4 ТОГДА ПолнаяТаблицаПродажСегмент.ДатаПродажи КОНЕЦ) КАК Остальные, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.РодительСпискаГрупп = &Группа1 ТОГДА ПолнаяТаблицаПродажСегмент.ДатаПродажи ИНАЧЕ NULL КОНЕЦ) КАК Группа1, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.РодительСпискаГрупп = &Группа2 ТОГДА ПолнаяТаблицаПродажСегмент.ДатаПродажи ИНАЧЕ NULL КОНЕЦ) КАК Группа2, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.РодительСпискаГрупп = &Группа3 ТОГДА ПолнаяТаблицаПродажСегмент.ДатаПродажи ИНАЧЕ NULL КОНЕЦ) КАК Группа3, МАКСИМУМ(ВЫБОР КОГДА ПолнаяТаблицаПродажСегмент.РодительСпискаГрупп = &Группа4 ТОГДА ПолнаяТаблицаПродажСегмент.ДатаПродажи ИНАЧЕ NULL КОНЕЦ) КАК Группа4, ВЫРАЗИТЬ(ПолнаяТаблицаПродажСегмент.Контрагент.НаименованиеПолное КАК СТРОКА(100)) КАК ПолноеНаименование ИЗ ПолнаяТаблицаПродажСегмент КАК ПолнаяТаблицаПродажСегмент Необходимо чтобы группа1, группа2, группа3, группа4 были в СЗ, где может быть 15 групп, а может и вообще быть одна группа. Но для каждого элемента списка надо выводить свои данные. Т.е. никак не катит вариант В (&СписокГрупп), потому что невозможно получить значение из этого списка. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |