2017-11-16 3 views
1

ここで私が持っているものだ...私はビューに個別の電子メールアドレスの数をカウントしようとしていますが、私は、構文を理解することはできません。カウントDISTINCT値

BEGIN 
    SELECT COUNT(*) AS UserCount FROM (
    SELECT DISTINCT EmailAddress 
    FROM viewCohortsAuthorizedByContractor 
    WHERE (ListAccess = 1) AND (ContractorId = @id) 
) 
END 

内部選択は正常に動作しますが、COUNTを追加しようとすると、メッセージ156、レベル15、状態1、プロシージャrptContractorUsersWithListUserCount、行23 [バッチ開始行15] キーワード 'END'の近くに構文が正しくありません。私は簡単な解決策があると確信している

、私はちょうどあなたがサブクエリを必要としない...

+1

- Q'として 'SELECT COUNT(*)USERCOUNT AS(...)FROMを。キーワードASは必要ありません - 'SELECT COUNT(*)AS UserCount FROM(...)Q'。あなたのケースでは、SQLServerはあなたのエイリアスであると考えています。初期のSteveB氏があなたのケースをより正確に質問してくれました。 – Leran2002

+0

これは簡単なことだと分かっていました。最後に何の句もなかったことを考えれば、エイリアスは考えられませんでした(Where、Order By)。 – PKatona

+0

TSQLの構文では、いずれの場合でもサブクエリのエイリアスを指定する必要があります。 – Leran2002

答えて

2

それを把握することはできません。これを試してください:あなたは、あなたのサブクエリの別名を指定するのを忘れて

SELECT count(DISTINCT EmailAddress) as UserCount 
FROM viewCohortsAuthorizedByContractor 
WHERE (ListAccess = 1) AND (ContractorId = @id) 
+0

魅力的な作品です! – PKatona

0
BEGIN 
    SELECT COUNT(*) AS UserCount FROM (
    SELECT DISTINCT EmailAddress 
    FROM viewCohortsAuthorizedByContractor 
    WHERE (ListAccess = 1) AND (ContractorId = @id) 
)A -----give a name for result set 
END 
関連する問題