2016-04-13 12 views
0

Seit 3 ​​Stunden versuche ich verschiedene Spalten zu zählen, ohne sie zu gruppieren. Ich versuchte es mit Join oder Sub-Select-Abfragen, aber wie ich neu in SQL bin, habe ich nicht gelöst, wie es geht.SQL - Anzahl ohne Gruppierung

So, hier ist meine SQL-Abfrage:

SELECT [Destination ID], 
     [ProjectID], 
     [Campaign ProjectId] 
FROM Raw_Data; 

Wie kann ich die Ziel-ID, Projekt-ID und die Kampagne Projekt-ID in einer SQL-Abfrage und zeigen auch jede ID in der Tabelle zählen.

Hier ein Beispiel, wie die Ausgabe aussehen sollte:

Screenshot

ich MS Access verwenden.

Es wäre toll, wenn mir einige helfen könnten.

Vielen Dank!

+5

Ihre Frage ist sehr schwer zu verstehen. Vielleicht, weil Sie über Technik sprechen ("zählen ohne Gruppierung"), anstatt uns zu zeigen, welches Ergebnis Sie suchen. Zeigen Sie einige Beispieldaten und erwartetes Ergebnis und wir helfen Ihnen gerne weiter. –

+0

"Jede ID"? Sowohl Ziel-ID, Projekt-ID und Kampagne ProjectId? Zeigen Sie uns Beispieltabellendaten und das erwartete Ergebnis! – jarlh

+0

Von meinem Verständnis der Frage, wenn Sie nur zählen möchten, verwenden Sie SELECT Count (*) FROM Raw_Data; –

Antwort

1

Man könnte dies versuchen, wenn ich Sie richtig verstanden:

SELECT 
    [Destination ID], 
    (SELECT COUNT([Destination ID]) 
     FROM Raw_Data AS T2 
     WHERE T2.[Destination ID] = T1.[Destination ID]) AS DestCount, 
    [ProjectID], 
    (SELECT COUNT([ProjectID]) 
     FROM Raw_Data AS T3 
     WHERE T3.[ProjectID] = T1.[ProjectID]) AS ProjectCount, 
    [Campaign ProjectId], 
    (SELECT COUNT([Campaign ProjectId]) 
     FROM Raw_Data AS T4 
     WHERE T4.[Campaign ProjectId] = T1.[Campaign ProjectId]) AS CampaignCount 
FROM Raw_Data AS T1; 

EDIT

Bei neueren Access-Versionen könnten Sie versuchen:

SELECT 
    T1.[Destination ID], 
    T2.[DestCount], 
    T1.[ProjectID], 
    T3.[ProjectCount], 
    T1.[Campaign ProjectId], 
    T4.[CampaignCount] 
FROM (((Raw_Data AS T1 
     INNER JOIN 
     (
     SELECT [Destination ID], COUNT([Destination ID]) AS DestCount 
     FROM Raw_Data 
     GROUP BY [Destination ID] 
     ) 
     AS T2 ON 
     T1.[Destination ID] = T2.[Destination ID]) 
     INNER JOIN 
     (
     SELECT [ProjectID], COUNT([ProjectID]) AS ProjectCount 
     FROM Raw_Data 
     GROUP BY [ProjectID] 
     ) 
     AS T3 
     ON T1.[ProjectID] = T3.[ProjectID]) 
     INNER JOIN 
     (
     SELECT [Campaign ProjectID], COUNT([Campaign ProjectID]) AS CampaignCount 
     FROM Raw_Data 
     GROUP BY [Campaign ProjectID] 
     ) 
     AS T4 
     ON T1.[Campaign ProjectID] = T4.[Campaign ProjectID]) 

Ich kann dies nicht testen Lesen Sie in neueren Access-Versionen, dass dies funktioniert.

+0

Vielen Dank Nik Bo. Das ist genau das, was ich brauche. Aber mein Tisch ist sehr groß und die Abfrage dauerte ewig. Ist auch eine andere Lösung möglich? Vielleicht eine ressourcenschonendere Abfrage. – Peter

+0

Welche MS Access-Version verwenden Sie? –

+0

Zugriff 2007-2013 – Peter