Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / нужна помощь в составлении запроса / 23 сообщений из 23, страница 1 из 1
24.01.2014, 13:20:30
    #38536777
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
добрый день. помогите, пожалуйста, не соображу, как построить запрос.

Имеется таблица Table:



В результирующем запросе должно быть 6 колонок и 6 записей

первые 3 колонки берутся из исходной таблицы с direction = 1, вторые 3 колонки - с Direction = 2. Причем в одной строке могут быть заполнены все колонки + все должно быть сгруппировано по полю Adate. В недостающих ячейках нужно проставить null.

В итоге вот что должно получиться:



Чего удалось добиться, но это не совсем то:

Код: sql
1.
2.
3.
4.
5.
6.
 select * from
    (select * from table1 t
     where t.direction = 1) a full join
    (select * from table1 t
     where t.direction = 2) b
   on a.adate = b.adate





или

Код: sql
1.
2.
3.
4.
select distinct( t1.adate ), t2.acount a2, t2.direction d2, t3.acount a3, t3.direction d3
from table1 t1
left join table1 t2 on t2.direction = 1 and t2.adate = t1.adate
left join table1 t3 on t3.direction = 2 and t3.adate = t1.adate



результат тот же
...
Рейтинг: 0 / 0
24.01.2014, 13:29:17
    #38536791
нужна помощь в составлении запроса
pivot тебе нужен. попробуй сэмулировать его на CASE + gropu by
...
Рейтинг: 0 / 0
24.01.2014, 13:30:45
    #38536800
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Johnnyyy,

странное у вас что-то. Соединение по датам?

full join или left join + union
...
Рейтинг: 0 / 0
24.01.2014, 13:40:15
    #38536828
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
смысл такой. Группируем по дате. Берем первое число даты. Смотрим, есть ли по данной дате строки с direction = 1, Добавляем эти строки в первые 3 столбца. Потом смотрим по этой дате строки с direction = 2. Если есть - добавляем их в последние 3 столбца результирующей таблицы. Где остаются недостающие ячейки в первых трех столюцах или вторых трех - проставляем null. Далее берем следующее число даты и т.д.. Реализовать с временной таблицей просто, но хотелось бы ограничиться запросом.
...
Рейтинг: 0 / 0
24.01.2014, 13:44:15
    #38536835
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Johnnyyy,

вы тут не группируете
...
Рейтинг: 0 / 0
24.01.2014, 13:47:45
    #38536844
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Симонов ДенисJohnnyyy,

вы тут не группируете

Я понимаю) Выше я просто словесно описал то, как должна быть построена результирующая таблица.
...
Рейтинг: 0 / 0
24.01.2014, 13:51:03
    #38536854
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Johnnyyy,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with table2 as (
    select adate,
             acount,
             direction
    from table1
    where direction = 1
),
table3 as (
    select adate,
             acount,
             direction
    from table1
    where direction = 2
)
select * 
from table2 full join table3 on table2.adata = table3.adata
...
Рейтинг: 0 / 0
24.01.2014, 13:55:56
    #38536866
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Симонов ДенисJohnnyyy,

Код: sql
1.
with table2 as (



В первом моем сообщении есть этот запрос с результатом - немного не то
...
Рейтинг: 0 / 0
24.01.2014, 14:03:34
    #38536878
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Johnnyyy,

ответь для чего это нужно
...
Рейтинг: 0 / 0
24.01.2014, 14:15:11
    #38536903
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
JohnnyyyСимонов ДенисJohnnyyy,

Код: sql
1.
with table2 as (



В первом моем сообщении есть этот запрос с результатом - немного не то

Да, результат совсем не тот, если добавить еще одну строку
ADATE ACOUNT DIRECTION
02.01.2013 17 2

то получается хрень:


Симонов ДенисJohnnyyy,
ответь для чего это нужно

Это уже другой вопрос. Алгоритм я привел выше - меня интересовало можно или нет по такому алгоритму выбрать данные и вывести такой результат.
...
Рейтинг: 0 / 0
24.01.2014, 14:24:35
    #38536924
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Johnnyyy,

вы хотите что-то уж очень кривое. Поэтому я и спросил зачем. И я так до сих пор и не понял по каким критериям у вас там должно соединение проводится. Покажите что как вы считаете должно получится если добавить ещё одну строчку 02.01.2013 17 2.
...
Рейтинг: 0 / 0
24.01.2014, 14:35:06
    #38536935
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Симонов ДенисJohnnyyy,

вы хотите что-то уж очень кривое. Поэтому я и спросил зачем. И я так до сих пор и не понял по каким критериям у вас там должно соединение проводится. Покажите что как вы считаете должно получится если добавить ещё одну строчку 02.01.2013 17 2.

...
Рейтинг: 0 / 0
24.01.2014, 14:36:50
    #38536941
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Не совсем то, из последнего скриншота взять только последнюю строку, предпоследние взять из самого первого скриина
...
Рейтинг: 0 / 0
24.01.2014, 14:39:59
    #38536951
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Запутал вас, вот что должно быть в результате добавления строки 02.01.2013 17 2

...
Рейтинг: 0 / 0
24.01.2014, 14:42:35
    #38536953
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Johnnyyy,

так и не понял чего вы там хотите. Ваша логика соединения не ясна. Вам поможет либо PSQL блок либо FB3 с оконными функциями.
...
Рейтинг: 0 / 0
24.01.2014, 14:58:41
    #38536973
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Симонов ДенисJohnnyyy,

так и не понял чего вы там хотите. Ваша логика соединения не ясна. Вам поможет либо PSQL блок либо FB3 с оконными функциями.


упрощенный вариант, как получить таблицу result?

...
Рейтинг: 0 / 0
24.01.2014, 15:06:35
    #38536984
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Какой критерий сортировки? джойн по дате что ли?
...
Рейтинг: 0 / 0
24.01.2014, 15:07:52
    #38536988
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Johnnyyy,

порядок записей не имеет никакого значения?
...
Рейтинг: 0 / 0
24.01.2014, 15:09:04
    #38536991
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Hello, Ivan_Pisarevsky!
You wrote on 24 января 2014 г. 15:07:44:

Ivan_Pisarevsky> Какой критерий сортировки? джойн по дате что ли?
нет там никаких внятных критериев.
автор пытается сделать "чтоб было красиво".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.01.2014, 15:09:45
    #38536992
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Ivan_PisarevskyКакой критерий сортировки? джойн по дате что ли?

Об этом нужно догадаться, так как дано: алгоритм + исходные данные + то, что должно получиться
...
Рейтинг: 0 / 0
24.01.2014, 15:12:08
    #38536995
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
pastorJohnnyyy,

порядок записей не имеет никакого значения?

порядок не имеет значения, так как внутри остается только сортировать по acount - но это не нужно.
...
Рейтинг: 0 / 0
24.01.2014, 15:12:29
    #38536998
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
Johnnyyy,

кто вам такой алгоритм дал? Невменяемый препод?
...
Рейтинг: 0 / 0
25.01.2014, 09:14:59
    #38537559
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь в составлении запроса
JohnnyyyОб этом нужно догадатьсяУ нас не соревнование бабок-гадалок. закрыто.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / нужна помощь в составлении запроса / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]