2017-01-21 1 views
0

Я делаю накопление данных, исходя из 30 минут на один день, клиенты выполнили свои транзакции в течение этого дня. У меня есть две таблицы, первая показывает поведение клиентов в течение всего дня. вторая таблица показывает поведение клиента только ночью. Я хочу сделать левое соединение для двух таблиц со временем: Можно ли сделать? На самом деле, я пытался это сделать, но я получил дублирование или перекрестные продукты между двумя таблицами.левое соединение для двух таблиц со временем основано

Примечание: я могу сделать левое соединение между двумя таблицами, но не основанное на времени.

Здесь осветление для таблиц

Таблица 1

Time_Minutes_Based|User_Id|Total_Of_Transactions|Total_of_outgOing 
10:00:30   | 1 |   4   |   9 
10:00:30   | 2 |   12   |   5 
10:01:30   | 6 |   3   |   2 
.     |  |      | 
.     |  |      | 
.     |  |      | 
00:01:30   | 8 |   7   |   3 

Таблица 2 для только Ночных сделок:

Time_Minutes_Based|User_Id|Total_Of_Transactions_at_Night|Total_of_outgoing_at_Night 
00:00:30   | 9 |    0    |    6 
00:06:30   | 8 |    3    |    3 
00:06:30   | 3 |    4    |    0 
.     |  |        | 
.     |  |        | 
.     |  |        | 
05:59:00   | 2 |    9    |    3 

Ожидаемый Таблица:

Time_Minutes_Based|User_Id|Total_Of_Transactions|Total_of_outgoing|Time_Minutes_Based|User_Id|Total_Of_Transactions_at_Night|Total_of_outgoing_at_Night 
00:00:30   | 1 |  Null   |  Null  |  Null   | 3 |    1    | 
+0

Есть ли поле даты тоже? – McNets

+0

Да, но это будет одна дата, потому что эти транзакции в течение одного дня .. – Ala

+0

все ночные записи имеют соответствующую запись в дневном столе? или можно найти какую-нибудь запись в ночной таблице, которая не существует во всех дневных таблицах? – McNets

ответ

0

Это должно работать, бушель t Time_Minutes_Base всего дневного стола и таблицы NightOnly должны соответствовать 100%.

00:00:30 <> 00:00:31 


select 
     wd.Time_Minutes_Based 
    , wd.User_Id 
    , wd.Total_Of_Transactions 
    , wd.Total_of_outgOing 
    , no.Total_Of_Transactions_at_Night 
    , no.Total_of_outgoing_at_Night 
from 
    WholeDay wd 
    left join NightOnly no 
where 
    wd.UserId = no.UserId 
    wd.Time_Minutes_Based = no.Time_Minutes_Based; 

Другой подход, если вам нужно обеспечить, чтобы запрос возвращал все записи.

select 
     Time_Minutes_Based 
    , User_Id 
    , Total_Of_Transactions 
    , wd.Total_of_outgOing 
    , '' as Total_Of_Transactions_at_Night 
    , '' as Total_of_outgoing_at_Night 
from 
    WholeDay 
UNION ALL 
select 
     Time_Minutes_Based 
    , User_Id 
    , '' as Total_Of_Transactions 
    , '' as Total_of_outgOing 
    , Total_Of_Transactions_at_Night 
    , Total_of_outgoing_at_Night 
from 
    NightOnly;