2013-04-20 22 views
5

Mam kwerendy SQLJak mogę przekonwertować to zapytanie SQL na zapytanie 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') 

Mam przeliczone go do dostępu, jak:

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

Ale to daje mi błąd: błąd składni (brak operatora) w wyrażeniu kwerendy „COUNT (DISTINCT Polling_Stations.P_ID) ".

+0

Jaki jest Twój sentax błąd? – Kermit

+1

Błąd składni (brak operatora) w wyrażeniu zapytania "Count (DISTINCT Polling_Stations.P_ID)". – sangeen

+0

Czy nawiasy kwadratowe są ważne w dostępie? –

Odpowiedz

5

Dostęp SQL nie obsługuje COUNT(DISTINCT ...), więc zamiast tego trzeba zrobić

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

Dostęp nie obsługuje Count(DISTINCT ...). SELECT DISTINCT w podzapytaniu i wykonaj liczenie z zapytania nadrzędnego.

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;