2015-12-01 3 views
1

У меня есть две таблицы, которые я хочу присоединиться:Выравнивание по левому краю, не повторяя значения из присоединяемой таблицы

Таблица 1

Room No  Guest Nights Rate Gross Rent 
    2   John  11  120  1320 
    2  Michael 4  120  480 
    2  Helen  1  120  120 
    2  Andrew  7  120  840 

Таблица 2

Room No Amount 
    1  1000 
    2  965 
    3  400 

Я хочу для объединения данных из таблицы 2 в таблицу 1 и получить следующую таблицу:

Room No Guest Nights Rate Gross Rent Amount 
    2  John  11  120  1320  965 
    2  Michael 4  120  480  Null 
    2  Helen 1  120  120  Null 
    2  Andrew 7  120  840  Null 

Когда я делаю Table 1 LEFT JOIN Table 2 ON Table 1.Room No=Table 2.Room No, количество «965» появляется в каждой строке (((но я хочу, чтобы он отображался только один раз.

+0

Пожалуйста, переформатировать текст. – openwonk

+0

И какие критерии вы бы использовали для сортировки списка гостей? – shawnt00

+0

Добавьте также ваш запрос –

ответ

0

Чтобы сделать такие запросы, вы можете попробовать Аналитические функции, такие как LAG, как https://oracle-base.com/articles/misc/lag-lead-analytic-functions Следующий запрос может помочь вам получить такой результат.

select Room_No , 
     Guest  , 
     Nights  , 
     Rate  , 
     Gross_Rent , 
     (CASE WHEN amt_prev<> Amount OR amt_prev is NULL THEN Amount 
      ELSE NULL 
     END) as amt 
from (select 1.Room_No  , 
       1.Guest  , 
       1.Nights  , 
       1.Rate  , 
       1.Gross_ Rent , 
       2.Amount  , 
       LAG(2.Amount, 1,NULL) OVER (ORDER BY 2.Amount) AS amt_prev 
     from Table1 1,Table2 2 
     where 1.Room_No=2.Room_No) 

Надеется, что это поможет ..

Смежные вопросы