2013-04-20 6 views
5

私はとのアクセスにそれを変換したSQLこのSQLクエリをMS Accessクエリに変換するにはどうすればよいですか?

でクエリ
SELECT  COUNT(DISTINCT dbo.Polling_Stations.P_ID) AS [Male Stations] 
FROM   dbo.Agent INNER JOIN 
        dbo.Polling_Stations ON dbo.Agent.P_ID = dbo.Polling_Stations.P_ID 
GROUP BY dbo.Polling_Stations.Gender 
HAVING  (dbo.Polling_Stations.Gender = N'Male') 

を持っている:

SELECT  COUNT(DISTINCT Polling_Stations.P_ID) AS [Male Stations] 
FROM   Agent INNER JOIN 
        Polling_Stations ON Agent.P_ID = Polling_Stations.P_ID 
GROUP BY Polling_Stations.Gender 
HAVING  (Polling_Stations.Gender = 'Male') 

しかし、それは私にエラーを与える:(DISTINCTカウント」 構文エラー(演算子がありません)クエリ式でのPolling_Stations.P_ID) 'を返します。

+0

あなたsentaxエラーが何を行う必要がありますか? – Kermit

+1

クエリ式 'Count(DISTINCT Polling_Stations.P_ID)'に構文エラー(演算子がありません)があります。 – sangeen

+0

角括弧はアクセスに有効ですか? –

答えて

5

アクセスSQLはCOUNT(DISTINCT ...)をサポートしていないので、代わりにあなたは

SELECT COUNT(*) AS [Male Stations] 
FROM 
(
    SELECT DISTINCT Polling_Stations.P_ID 
    FROM Agent INNER JOIN Polling_Stations 
     ON Agent.P_ID = Polling_Stations.P_ID 
    WHERE Polling_Stations.Gender = "Male" 
) 
4

アクセスは、Count(DISTINCT ...)をサポートしていません。 SELECT DISTINCTをサブクエリに追加し、親クエリからカウントします。

SELECT COUNT(ps.P_ID) AS [Male Stations] 
FROM 
    Agent 
    INNER JOIN 
    (
     SELECT DISTINCT P_ID 
     FROM Polling_Stations 
     WHERE Gender = 'Male' 
    ) AS ps 
    ON Agent.P_ID = ps.P_ID; 
関連する問題