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 Server では異なりますか?

どんな助けでも大歓迎です。

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 に答える