2012-06-08 2 views
3

У меня есть таблица с номерами счетов в (account_num) и профилях пользователей (profile_id). Для разных профилей может быть несколько экземпляров одного и того же номера учетной записи или нескольких экземпляров профиля с разными номерами учетных записей. (Не может быть нескольких экземпляров профиля с тем же номером учетной записи).Значительное количество номеров учетных записей, отображаемых в нескольких профилях

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

Я пытался выполнить нижеследующий запрос (хотя рекомендация более эффективного запроса была бы оценена);

Select Count(*) from 
(select account_num, count(profile_id) as num_users 
from dbo.sample 
where account_num <> '' 
group by account_num 
) 
where num_users >1 

Но я продолжаю получать следующую ошибку;

Msg 156, Level 15, State 1, Line 7 
Incorrect syntax near the keyword 'where'. 

Я использую Microsoft SQL Server Management Studio. Как в стороне, будет ли этот запрос отличаться на сервере Oracle?

Любая помощь будет высоко оценена.

ответ

2

попробовать альясинг подзапроса

select Count(*) from 
    ( 
     select account_num, count(profile_id) as num_users 
     from dbo.sample 
     where account_num <> '' group by account_num 
    ) t 
where num_users > 1 
+0

Так просто! То же самое потребуется в Oracle DB? – user1444329

+0

Вам наверняка нужен псевдоним MySQL и SQL-Server. Я тоже думаю об Oracle, но не уверен. –

+0

Похоже, в Oracle нет необходимости. См. [Этот пример] (http://sqlfiddle.com/#!4/c55f3/3). Он работает для Oracle, а не если вы измените DB Engine другим. –

0

Результат вы хотите также можно показать этот запрос:

SELECT COUNT(DISTINCT account_num) AS cnt 
FROM dbo.sample a      --- no AS here to work in Oracle 
WHERE account_num <> '' 
    AND profile_id IS NOT NULL 
    AND EXISTS 
     (SELECT * 
     FROM dbo.sample b 
     WHERE b.account_num = a.account_num 
      AND profile_id IS NOT NULL 
      AND b.PK <> a.PK     --- the PRIMARY KEY of the table 
    ) ; 
Смежные вопросы