|
Отбор по регистру сведений | ☑ | ||
---|---|---|---|---|
0
Maikroft
27.02.18
✎
19:25
|
Добрый день.
В общем, есть регистр сведений. В нем есть измерение - Вид Тарифа и есть ресурс - тариф. Вопрос такой: можно ли сделать выборку по 4 измерениям? Я написал запрос (ниже), он выводит все корректно, но если одного измерения нет в регистре (то есть, к примеру, тарифа сверх резерва просто не предусмотрено по договору), то запрос не выдает ничего. Помогите? ) ВЫБРАТЬ ЕСТЬNULL(ТарифEUR.Тариф, 0) КАК ТарифEUR, ЕСТЬNULL(ТарифFIN.Тариф, 0) КАК ТарифFIN, ЕСТЬNULL(ТарифСверхРезерваEUR.Тариф, 0) КАК ТарифСверхРезерваEUR, ЕСТЬNULL(ТарифСверхРезерваFIN.Тариф, 0) КАК ТарифСверхРезерваFIN, ИЗ РегистрСведений.ТарифнаяСетка.СрезПоследних(&Период, ВидТарифа = ЗНАЧЕНИЕ(Перечисление.ТарифнаяСетка.ТарифEUR)) КАК ТарифEUR, РегистрСведений.ТарифнаяСетка.СрезПоследних(&Период, ВидТарифа = ЗНАЧЕНИЕ(Перечисление.ТарифнаяСетка.ТарифFIN)) КАК ТарифFIN, РегистрСведений.ТарифнаяСетка.СрезПоследних(&Период, ВидТарифа = ЗНАЧЕНИЕ(Перечисление.ТарифнаяСетка.ТарифСверхРезерваEUR)) КАК ТарифСверхРезерваEUR, РегистрСведений.ТарифнаяСетка.СрезПоследних(&Период, ВидТарифа = ЗНАЧЕНИЕ(Перечисление.ТарифнаяСетка.ТарифСверхРезерваFIN)) КАК ТарифСверхРезерваFIN, СГРУППИРОВАТЬ ПО ЕСТЬNULL(ТарифEUR.Тариф, 0), ЕСТЬNULL(ТарифFIN.Тариф, 0), ЕСТЬNULL(ТарифСверхРезерваEUR.Тариф, 0), ЕСТЬNULL(ТарифСверхРезерваFIN.Тариф, 0) |
|||
1
Йохохо
27.02.18
✎
19:35
|
срочно перепиши пока начальники не видели
|
|||
2
Maikroft
27.02.18
✎
19:39
|
Да здесь нечего смотреть, стандарт.)
|
|||
3
Йохохо
27.02.18
✎
19:40
|
(2) корпоративный?)
|
|||
4
Maikroft
27.02.18
✎
19:41
|
Хе-хе, нет, тарифный, скорее.)
|
|||
5
Волшебник
27.02.18
✎
19:42
|
Вы бы хоть уточнили соединение между таблицами.
|
|||
6
Йохохо
27.02.18
✎
19:49
|
(4) получи срез столбцом, а потом разбери в строку, через выбор когда объединить. Если принципиально запросом строку получить
|
|||
7
Maikroft
27.02.18
✎
20:28
|
Так это одна таблица, точнее, один регистр сведений.
Мне не принципиально, в строку или нет, просто необходимо выбрать все ресурсы, по которым есть данные. Но в том случае, если данных нет, запрос не выбирает ни один ресурс.( Я уже по разному пробовал, все одно. |
|||
8
Йохохо
27.02.18
✎
20:33
|
(7) в запросе у тебя 4 обращения и потом декартово произведение, волосы дыбом должны колоситься, сделай 1 срез, и 4 поля выбор когда и потом навесь максимум
|
|||
9
Волшебник
27.02.18
✎
20:36
|
(7) Ты пойми, что https://ru.wikipedia.org/wiki/Прямое_произведение это пиздец для СУБД
|
|||
10
Maikroft
27.02.18
✎
20:57
|
Спасибо за совет, сейчас попробую сделать один срез, а остальные поля выбором.
|
|||
11
Maikroft
27.02.18
✎
22:11
|
Дрянь.
Все равно, если нет записи в регистре (по РезервFIN, к примеру) ставит NULL ВЫБРАТЬ СУММА(ВЫБОР КОГДА ТарифнаяСеткаСрезПоследних.ВидТарифа = ЗНАЧЕНИЕ(Перечисление.ТарифнаяСетка.РезервEUR) ТОГДА ТарифнаяСеткаСрезПоследних.Тариф ИНАЧЕ 0 КОНЕЦ) КАК РезервEUR, СУММА(ВЫБОР КОГДА ТарифнаяСеткаСрезПоследних.ВидТарифа = ЗНАЧЕНИЕ(Перечисление.ТарифнаяСетка.РезервFIN) ТОГДА ТарифнаяСеткаСрезПоследних.Тариф ИНАЧЕ NULL КОНЕЦ) КАК РезервFIN ИЗ РегистрСведений.ТарифнаяСетка.СрезПоследних(&Период, ) КАК ТарифнаяСеткаСрезПоследних ГДЕ И ТарифнаяСеткаСрезПоследних.Период = &Период |
|||
12
Maikroft
27.02.18
✎
22:12
|
ИНАЧЕ NULL пробовал менять на все подряд, не выходит.)
|
|||
13
Малыш Джон
27.02.18
✎
22:26
|
ВЫБРАТЬ
ЗНАЧЕНИЕ(Перечисление.ТарифнаяСетка.РезервEUR) КАК ВидТарифа ПОМЕСТИТЬ ВТ_ВидыТарифов ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ТарифнаяСетка.РезервFIN); ВЫБРАТЬ ТарифнаяСеткаСрезПоследних.Тариф КАК Тариф, ТарифнаяСеткаСрезПоследних.ВидТарифа КАК ВидТарифа ПОМЕСТИТЬ ВТ_ДанныеСреза ИЗ РегистрСведений.ТарифнаяСетка.СрезПоследних(&Период, ВидТарифа В (ВЫБРАТЬ ВТ_ВидыТарифов.ВидТарифа ИЗ ВТ_ВидыТарифов КАК ВТ_ВидыТарифов ) КАК ТарифнаяСеткаСрезПоследних; ВЫБРАТЬ ВТ_ВидыТарифов.ВидТарифа, ЕСТЬNULL(ВТ_ДанныеСреза.Тариф,0) КАК Тариф ИЗ ВТ_ВидыТарифов КАК ВТ_ВидыТарифов ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДанныеСреза КАК ВТ_ДанныеСреза ПО ВТ_ВидыТарифов .ВидТарифа=ВТ_ДанныеСреза.ВидТарифа |
|||
14
Малыш Джон
27.02.18
✎
22:28
|
+(13) правда, хз, это имелось в виду или нет
|
|||
15
Волшебник
27.02.18
✎
22:32
|
(14) пишется "иметь ввиду"
|
|||
16
Maikroft
27.02.18
✎
22:39
|
Именно так.
То есть через виртуальные таблицы все же это делается... Я думал, можно как-то обойтись без них. Спасибо большое. P.S. В запросе ) пропущена в 11 строке (это я для тех, кто вдруг на тему набредет). |
|||
17
Малыш Джон
27.02.18
✎
22:39
|
(15) это устойчивое выражение, так закрепилось в языке:
"иметь в виду" http://gramatik.ru/vvidu-ili-v-vidu-slitno-ili-razdelno/ |
|||
18
Maikroft
27.02.18
✎
22:40
|
"В виду" в данном случае пишется, кстати, раздельно.)
|
|||
19
Волшебник
27.02.18
✎
22:41
|
(18) Спасибо за поправку.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |