184 похожих чатов

Добрый вечер! Помогите, пожалуйста, с джоином. Мне нужно

связать 2 таблицы по id и по дате, но дата не точно равна другой, а находится в диапазоне, что-то вроде:

select *
from T1
full join T2 on T2.id = T1.id
and T2.Date between dateadd(DAY, -1, T1.Date) and dateadd(DAY, 1, T1.Date)

Гуглила в этом чате похожие запросы, asof join не подходит, к сожалению, тк у меня диапазон. Перенести условие в секцию where тоже не могу, потому что это full join и мне нужно видеть несовпадающие строки, а where их отрежет. Думала может диапазон в массив положить и как-то так смотреть..

Может быть у вас будут какие-то идеи? Спасибо! Вот запрос для тестирования:

with T1 as
(
select 2 as N, 1 as id, toDate('2022-01-02') as Date
union all
select 1 as N, 1 as id, toDate('2022-01-03') as Date
union all
select 3 as N, 1 as id, toDate('2022-01-04') as Date
union all
select 1 as N, 2 as id, toDate('2022-01-05') as Date
),
T2 as
(
select 3 as N, 1 as id, toDate('2022-01-04') as Date
union all
select 1 as N, 1 as id, toDate('2022-01-05') as Date
union all
select 4 as N, 1 as id, toDate('2022-01-06') as Date
union all
select 1 as N, 1 as id, toDate('2022-01-07') as Date
union all
select 3 as N, 2 as id, toDate('2022-01-04') as Date
union all
select 1 as N, 2 as id, toDate('2022-01-05') as Date
union all
select 4 as N, 2 as id, toDate('2022-01-06') as Date
union all
select 1 as N, 2 as id, toDate('2022-01-07') as Date
)

select
T1.Date,
T2.Date,
T1.id,
T2.id,
sum(T1.N),
sum(T2.N)
from T1
full join T2 on T2.id = T1.id
and T2.Date = T1.Date
group by T1.Date, T2.Date, T1.id, T2.id
order by T1.Date desc, T2.Date desc

9 ответов

12 просмотров

Full ? Или все таки left? Where работает после джойна, поэтому вы через or можете дописать условий between... or t2 is null or ...

Ilona- Автор вопроса
Denny [Altinity]
Full ? Или все таки left? Where работает после джо...

Спасибо, точно full( я пробовала дописать в условие, но он просто отрезает ненужные строки, а мне бы надо, чтобы суммы по ним попали в несматченные записи..

Ilona- Автор вопроса
Denny [Altinity]
Full ? Или все таки left? Where работает после джо...

То есть нужно, чтобы фильтровалось именно на уровне джоина, а все что не попало, суммировалось отдельно. Спасибо!

Ilona
Спасибо, точно full( я пробовала дописать в услови...

Ну так сделайте from t1,t2 where и впишите все условия

Ilona- Автор вопроса
Denny [Altinity]
Ну так сделайте from t1,t2 where и впишите все усл...

А так можно было?😅 спасибо, сча попробую!

Ilona- Автор вопроса
Denny [Altinity]
Ну так сделайте from t1,t2 where и впишите все усл...

Эм, ну он так inner join делает ) несовпадающих записей нет

Ilona
Эм, ну он так inner join делает ) несовпадающих за...

Вы условия неправильно пишите значит. У вас or есть? Потренируйтесь на таблице из 2х строк.

Ilona- Автор вопроса
Denny [Altinity]
Вы условия неправильно пишите значит. У вас or ест...

Видимо да, но что-то я вообще не соображу как с помощью from T1, T2 получить аналог full join. Там же происходит декартово соединение и пустых строк не получается? Если не сложно, покажите, пожалуйста, на вот этом простом примере из таблиц из 2-х строк: Спасибо! with T1 as ( select 1 as id, 1 as N union all select 2 as id, 1 as N ), T2 as ( select 3 as id, 1 as N union all select 2 as id, 1 as N ) select T1.id, T2.id, sum(T1.N), sum(T2.N) from T1 full join T2 on T2.id = T1.id group by T1.id, T2.id

Ilona
Видимо да, но что-то я вообще не соображу как с по...

А ну в кх чтобы null были надо добавить settings join_use_nulls=1

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта