Пожалуйста, помогите, как присоединиться к столам - PullRequest
0 голосов
/ 01 марта 2019

Я использую приведенный ниже запрос, чтобы получить последнюю запись A и C из table_name.

select * from 
( select *,row_number() over(partition by A order by B desc) rn
    from table_name 
) a where rn=1

Table_name содержит поле A, B (дата), C ​​(int), и у меня есть другая таблица Table_NameB с полем A, C_P, C_N (значение образца, как показано ниже)

A,  C_P,     C_N
1, 1,       10
2, -10,     -20
3, 1,       100

Я хочу присоединиться к этой таблице и вычислить значение на лету

, если Table_Name содержит

A,B, C
1, 2019-01-01,1000
2, 2019-02-02,  -15
3,  2019-02-03, 0

Не могли бы вы помочь, как получить приведенный ниже выводприсоединившись к Table_NameB?

результат будет

A, C, C_P, C_N 
1, 1000, 1, 10, OVER <-- as 1000 > 1 > 10
2, -15, -10, -20, NORMAL <-- as -15 >-10 >-20
3, 0, 1, 100, UNDER <-- as 0 < 1 < 100

1 Ответ

0 голосов
/ 01 марта 2019

Вы можете сделать что-то вроде этого

SELECT tablea.a, tableb.c, tablea.C_P, tablea.C_N, 
   (CASE
        WHEN tableb.c > tablea.C_P AND tableb.c > tablea.C_N THEN "OVER"
        WHEN tablea.C_N > tablea.C_P AND tablea.C_N > tableb.c THEN "NORMAL"
        WHEN tableb.c < tablea.C_P AND tableb.c < tablea.C_N THEN "UNDER"
    END   
   ) as result
FROM tablea
INNER JOIN tableb ON (tablea.a = tableb.a)

Вы можете проверить более подробно по go4smart

Надеюсь, это поможет.

Спасибо

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