|
СКД Изменение выборки данных
| ☑ |
0
Crusher
24.03.23
✎
09:49
|
Допустим, есть какая-то выборка данных. В ней есть поле, принимающее только 3 значения. Необходимо преобразовать эту выборку, чтобы для каждой строки выводились все значения этого поля, даже если по ним нет данных. Либо при выводе группировки по этому полю выводить все значения, в т.ч. с нулевыми ресурсами. Как обычно такое делается? Пробовал через создание отдельной таблички для этих 3х значений и левое соединение с выборкой по необходимому полю - не вышло.
|
|
1
Лирик
24.03.23
✎
09:51
|
Соединение должно быть полным
|
|
2
Crusher
24.03.23
✎
14:31
|
(1) Не выходит. Попробую наглядно обрисовать ситуацию.
Исходная выборка:
Поле1 | Поле2 | Сумма
Значение1 | 1 | 1000
Значение2 | 1 | 2000
Значение1 | 2 | 1000
Значение2 | 2 | 2000
Значение3 | 2 | 3000
Необходимо преобразовать выборку к:
Поле1 | Поле2 | Сумма
Значение1 | 1 | 1000
Значение2 | 1 | 2000
Значение3 | NULL | NULL
Значение1 | 2 | 1000
Значение2 | 2 | 2000
Значение3 | 2 | 3000
Не выводит строку Значение3 | NULL | NULL при полном соединении.
|
|
3
Остап Ибрагимович
24.03.23
✎
14:34
|
соединение - не наборов данных, а в запросе набора данных.
|
|
4
toypaul
гуру
24.03.23
✎
14:39
|
select p1.Поле1,p2.Поле2 from
into ft
(select distinct Поле1 from t) p1, (select distinct Поле2 from t) p2;
select ft.*, t.сумма from ft left join t on ft.поле1=t.поле1 and ft.поле2=ft.поле2
|
|
5
Crusher
24.03.23
✎
16:40
|
(3) В одном запросе пытаюсь сделать.
(4) Спасибо! На тестовых таблицах выводит необходимое, но боевой запрос с десятками дополнительных полей зависает. Я так понимаю, для всех соединяемых полей требуется выборка различных значений?
|
|
6
Crusher
25.03.23
✎
12:20
|
Получилось реализовать левым соединением измерений исходной таблицы к табличке значений по ИСТИНА с группировкой, затем левое соединение с исходной таблицей с соединением по всем полям.
|
|