2013-04-20 7 views
5

Ich habe Abfrage in SQLWie kann ich diese SQL-Abfrage in MS Access-Abfrage konvertieren?

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') 

ich es umgesetzt habe als für den Zugriff auf:

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') 

Aber es mir einen Fehler geben: Syntaxfehler in Abfrage-Ausdruck (Operator fehlt) ‚Count (DISTINCT Polling_Stations.P_ID) '.

+0

Was ist Ihr sentax Fehler tun müssen? – Kermit

+1

Syntaxfehler (fehlender Operator) im Abfrageausdruck 'Count (DISTINCT Polling_Stations.P_ID)'. – sangeen

+0

Sind eckige Klammern im Zugriff gültig? –

Antwort

5

Access SQL nicht unterstützt COUNT(DISTINCT ...), so stattdessen werden Sie

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

Access unterstützt Count(DISTINCT ...) nicht. SELECT DISTINCT in einer Unterabfrage, und führen Sie das Zählen von der übergeordneten Abfrage aus.

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; 
Verwandte Themen