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 服务器上会有所不同吗?

任何帮助将非常感激。

4

2 回答 2

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
于 2012-06-08T11:18:06.667 回答
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
      ) ;
于 2012-06-08T11:47:29.627 回答