Макс (дата) с внутренним соединением и оператором where - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть 2 таблицы, user и order.
И имя, и группа в таблице user образуют уникальную комбинацию, поэтому обратите внимание, что здесь у нас всего 5 уникальных комбинаций в записях.
Для каждой уникальной комбинации,Я хотел бы найти их последний соответствующий статус, только беспокойство об активном и неактивном.
Затем я проигнорирую активный статус и выведу запрос с неактивным статусом.
(но в настоящее время я только запрос для всехактивные / неактивные результаты, потому что я не хочу усложнять ситуацию)

sample Вот два ближайших оператора SQL, которые я написал (неверно)
это возвращает все уникальные комбинации со статусом: активный / неактивный

SELECT order.id, order.status, order.someA, order.someB, order.someC, order.date, user.name, user.group, user.site FROM order INNER JOIN user ON user.id = order.id WHERE (status = 'P' OR status = 'F');

это дает только первую запись активной / неактивной для каждой уникальной комбинации (должна быть последняя / последняя запись)

SELECT MAX(order.date), order.date, order.id, order.status, order.someA, order.someB, order.someC, user.name, user.group, user.site FROM order INNER JOIN user ON user.id = order.id WHERE site = 'US' AND (status = 'P' OR status = 'F') GROUP BY name, group ORDER BY date;

идентификатор имени группы сайта
K01 John Texas US
K02 Найл Огайо US
K03 Салли Огайо US
K04 Саймон Огайо US
K05 Джеймс Техас US
K06 Джеймс Техас US
K07 Джон Техас US

идентификатор удостоверения личности someA someB someC дата (отметка времени)
K01 активен Я просто случайно 21-09-2018 19:22:33 PM
K02 неактивен, введите несколько слов 22-09-2018 16:22: 33 PM
K03 активен здесь для этого 22-09-2018 19:22:33 PM
K04 Неизвестный фиктивный пример вывода 22-09-2018 19:22:33
K05 неактивен XSV 23-09-2018 19:22:33 вечера
K06 неизвестная надежда, которую я объясню 23-09-2018 19:22:33 вечера
K07 неизвестная мой вопрос хорошо 24-09-2018 19:22:33

Приведенные выше данные разделены табуляцией, дайте мне знать, если не удастся импортировать их в excel.
добро пожаловать в редактирование моих предложений, у меня может не быть идеального предложения для описания моего вопроса.

1 Ответ

0 голосов
/ 24 сентября 2018

Если вы хотите самый последний заказ, вы можете сделать:

select . . .   -- unclear what columns you really want
from users u join
     orders o
     on u.id = o.id
where (u.name, u.group, o.date) in
       (select u2.name, u2.group, max(o2.date)
        from users u2 join
             orders o2
             on u2.id = o2.id
        group by u2.name, u2.group
       ) and
       o.status <> 'active';
...