Уникальные значения в GRP, используя оператор DISTINCT? - PullRequest
0 голосов
/ 13 ноября 2018

Я использую SQL PLUS для запросов из трех таблиц: SNUMBER, ACCOUNTS и MYGRPS.

SELECT s.serialnumber,s.type,s.model,a.type,a.class, t.grp
from snumber s, accounts a, mygrps t
where s.snumber=a.snumber
and a.serialnumber=t.serialnumber
and rownum>2

Я хочу найти GRP в таблице MYGRPS, которые имеют повторяющиеся значения для столбца класса из таблицы ACCOUNTS.

В группе может быть от 1 до многих серийных номеров, я толькоЯ хочу найти GRP, которые имеют более одного серийного номера.

Каждый серийный номер имеет тип, модель и класс.Каждая группа должна иметь один и тот же класс.

Все серийные номера в GRP должны иметь одинаковое значение класса из таблицы ACCOUNTS, поэтому я ищу GRP с более чем одним серийным номером, которые имеют более одного уникального значенияв столбце класса, чтобы исправить эти GRPS.

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

Любая помощь приветствуется!

1 Ответ

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

Сначала научитесь использовать правильный, явный, стандартный JOIN синтаксис. Никогда не используйте запятые в предложении FROM.

Вам нужно GROUP BY и HAVING:

select t.grp, count(distinct a.class) as num_classes
from snumber s join
     accounts a
     on s.snumber = a.snumber join
     mygrps t
     on a.serialnumber = t.serialnumber
group by t.grp
having min(a.class) <> max(a.class);
...