Выберите поле, имеющее более 1 связанных полей - PullRequest
0 голосов
/ 16 ноября 2018

Ниже приведен пример таблицы VIEW_TEST, из которой я хочу выбрать идентификаторы устройства, связанные с более чем 1 дорожкой.Например.100-е устройство связано с FirstTrack, а также с SecondTrack, поэтому его следует выбрать

Sample Table

Я много чего перепробовал, но не смог получить за него ответ.Ниже приведен запрос, который я пробовал, но он ничего не возвращает

select deviceid
from ( SELECT  distinct deviceid, trackid , count (distinct deviceid) over (partition by trackid) as cnt 
    FROM VIEW_TEST) t
    where cnt > 0;

Когда я выполняю ниже внутреннего запроса,

SELECT  distinct deviceid, trackid , count (distinct deviceid) over (partition by trackid) as cnt 
    FROM VIEW_TEST

Он дает мне следующий вывод

enter image description here

1 Ответ

0 голосов
/ 16 ноября 2018

Вам не нужно использовать оконную функцию, которую вы можете использовать вместо:

select t.*
from VIEW_TEST t
where exists (select 1 from VIEW_TEST t1 where t1.deviceid = t.deviceid and t1.trackid <> t.trackid);

Вы также можете использовать group by предложение:

select deviceid
from VIEW_TEST t
group by deviceid
having min(trackid) <> max(trackid); 

Однако, COUNT(DISTINCT trackid) будеттакже помогите:

select deviceid
from VIEW_TEST t
group by deviceid
having count(distinct trackid) > 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...