SQL Выберите из 1 строки таблицы с двумя значениями столбцов, которые не равны - PullRequest
0 голосов
/ 14 мая 2018

У меня есть таблица

id  number    name    update_date
1   123       asd       08.05.18
2   412       ddd       08.05.18
3   123       dsa       14.05.18
4   125       dsa       05.05.18

Вся таблица состоит из таких строк.Мне нужно выбрать строки 1 и 3, потому что мне нужны разные update_dates, но один и тот же номер.Как это сделать?Мне нужно увидеть изменения от конкретного номера между 2 датами обновления 08.05.18 и 14.05.18.У меня в таблице больше дат обновления.

Я пробовал:

SELECT *
FROM legal_entity_history a
JOIN legal_entity_history b ON a.BIN = b.BIN
WHERE ( a.update_date <> b.update_date AND
        a.update_date = "08.05.18" AND
        b.update_date = "14.05.18" ) 

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Относительно простой метод:

select leh.*
from legal_entity_history leh
where exists (select 1
              from legal_entity_history leh2
              where leh2.number = leh.number and leh2.update_date <> leh.update_date
             );

Для производительности вам нужен индекс на legal_entity_history(number, update_date).

0 голосов
/ 14 мая 2018

ПОПРОБУЙТЕ: Предполагая, что одно и то же число может появляться не более одного раза под одним и тем же update_date, поэтому вы можете добиться этого, используя GROUP BY с HAVING, как показано ниже

SELECT t.*
FROM test t
INNER JOIN (SELECT number 
            FROM test 
            GROUP BY number 
            HAVING COUNT(DISTINCT update_date) > 1) t1 ON t1.number = t.number

ВЫХОД :

id  number  name    update_date
1   123     asd     08.05.18
3   123     dsa     14.05.18
...