Удалите все идентификаторы, если не выполнено хотя бы одно условие - PullRequest
0 голосов
/ 10 мая 2019

У меня есть три столбца: identifier, driver_id, driver_id_was

Мое условие - исключить те идентификаторы, которые всегда имели driver_id и driver_ids_was как -1.

Но мой текущий запрос делает противоположное.Он включает в себя все идентификаторы, у которых driver_id и driver_id_was как -1 хотя бы один раз.

SELECT identifier
        ,model
        ,sw_pkg_version
        ,COUNT(CASE WHEN driver_id_was != -1 THEN 1 ELSE NULL END) AS "count_driver_id_was_not"
        ,COUNT(CASE WHEN driver_id_was = -1 THEN 1 ELSE NULL END) AS "count_driver_id_was"
        ,COUNT(CA

 FROM eld_messages
 WHERE model LIKE '%ca'
       AND created_at > getdate()-30
 GROUP BY identifier
          ,driver_id_was
          ,model
          ,sw_pkg_version
          ,driver_id
 HAVING count_driver_id_was_not = 0
    AND count_driver_id_was > 0;

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Вот как я понимаю вопрос, но трудно быть уверенным без выборочных данных или дополнительных разъяснений.Может быть, этот ответ вызовет какой-то ответ.

SELECT identifier
    ,model
    ,sw_pkg_version
FROM eld_messages
WHERE model LIKE '%ca'
  AND created_at > getdate()-30
  AND driver_id <> -1
  AND driver_id_was <> -1
0 голосов
/ 10 мая 2019

Мое условие - исключить те идентификаторы, которые всегда имели driver_id и driver_ids_was как -1.

Это то, что вы хотите?

select identifier
from eld_messages
group by identifier
having sum(case when count_driver_id_was_not <> -1 then 1 else 0 end) > 0 or
       sum(case when count_driver_id_was <> -1 then 1 else 0 end) > 0;

Или, аналогичноно более кратко:

select distinct identifier
from eld_messages
where count_driver_id_was_not <> -1 or count_driver_id_was <> -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...