Im Wesentlichen versuche ich, alle Mitarbeiter zu erfassen, die innerhalb von 1 Monat, 2 Monaten, 3 Monaten und nach bestimmten Verfallterminen für Sicherheitskurse sind. Alle vier Abfragen ziehen Daten aus demselben Satz von Tabellen.MS Access 13 SQL: Wie kann ich die Ergebnisse von vier Aggregat-Unteranfragen kombinieren?
Bis jetzt habe ich eine Abfrage erstellt, die dies für eine Bedingung tut und für jeden Datumsbereich dupliziert. Der Datensatz zurückgegeben wird, ist ähnlich der folgenden:
Company | EX | -------------- Acme | 27 | Bacme | 87 | EBDC | 21 | ...
Was ich versuche jetzt zu tun ist, sie zu kombinieren, so dass ich eine Abfrage, die eine Daten wie den folgenden Satz zurückgibt.
Company | EX | M1 | M2 | M3 | ----------------------------- Acme | 27 | 32 | 76 | 40 | Bacme | 87 | 12 | 33 | 76 | EBDC | 21 | 44 | 65 | 87 |
Ich habe versucht, eine Gewerkschaft zu schaffen, sondern das Ergebnis wollte ich nicht bekommen, und ich habe auch eine innere Verknüpfung in einer Sub-Abfrage zu erstellen versucht.
Aber, weiß nicht wirklich was ich mache. Ich wäre dankbar für jede Hilfe bei der Lösung dieses Problems, danke!
Nach dem untenstehenden Rat konnte ich diese Uber Abfrage erstellen! Und es funktioniert gut.
<pre>
SELECT
Q0.CN,
Q0.EX,
Q1.M1,
Q2.M2,
Q3.M3
FROM
(((((
SELECT
Companies.[Company Name] AS [CN],
Count(Companies.[Company Name]) AS [EX]
FROM
(SELECT
Companies.[Company Name]
FROM
Courses INNER JOIN
((Companies INNER JOIN
Candidates ON
Companies.[ID] = Candidates.[Company ID]) INNER JOIN
[Individual Candidate Course History] ON
Candidates.[ID] = [Individual Candidate Course History].[Candidate ID]) ON
Courses.[ID] = [Individual Candidate Course History].[Course ID]
WHERE
(([Individual Candidate Course History].[Valid Until])<Date())
ORDER BY
[Individual Candidate Course History].[Valid Until])
GROUP BY
Companies.[Company Name]) AS Q0 LEFT JOIN
(SELECT
Companies.[Company Name] AS [CN],
Count(Companies.[Company Name]) AS M1
FROM
(SELECT
Companies.[Company Name]
FROM
Courses INNER JOIN
((Companies INNER JOIN
Candidates ON
Companies.[ID] = Candidates.[Company ID]) INNER JOIN
[Individual Candidate Course History] ON
Candidates.[ID] = [Individual Candidate Course History].[Candidate ID]) ON
Courses.[ID] = [Individual Candidate Course History].[Course ID]
WHERE
((([Individual Candidate Course History].[Valid Until])
Between Date() And DateAdd("m",1,Date())))
ORDER BY
[Individual Candidate Course History].[Valid Until])
GROUP BY
Companies.[Company Name]) AS Q1 ON
Q0.CN = Q1.CN) LEFT JOIN
(SELECT
Companies.[Company Name] AS [CN],
Count(Companies.[Company Name]) AS M2
FROM
(SELECT
Companies.[Company Name]
FROM
Courses INNER JOIN
((Companies INNER JOIN
Candidates ON
Companies.[ID] = Candidates.[Company ID]) INNER JOIN
[Individual Candidate Course History] ON
Candidates.[ID] = [Individual Candidate Course History].[Candidate ID]) ON
Courses.[ID] = [Individual Candidate Course History].[Course ID]
WHERE
((([Individual Candidate Course History].[Valid Until])
Between DateAdd("m",1,Date()) And DateAdd("m",2,Date())))
ORDER BY
[Individual Candidate Course History].[Valid Until])
GROUP BY
Companies.[Company Name]
ORDER BY
Companies.[Company Name]) AS Q2 ON
Q0.CN = Q2.CN) LEFT JOIN
(SELECT
Companies.[Company Name] AS [CN],
Count(Companies.[Company Name]) AS M3
FROM
(SELECT
Companies.[Company Name]
FROM
Courses INNER JOIN
((Companies INNER JOIN
Candidates ON
Companies.[ID] = Candidates.[Company ID])
INNER JOIN [Individual Candidate Course History] ON
Candidates.[ID] = [Individual Candidate Course History].[Candidate ID]) ON
Courses.[ID] = [Individual Candidate Course History].[Course ID]
WHERE
((([Individual Candidate Course History].[Valid Until])
Between DateAdd("m",2,Date()) And DateAdd("m",3,Date())))
ORDER BY
[Individual Candidate Course History].[Valid Until])
GROUP BY
Companies.[Company Name]
ORDER BY
Companies.[Company Name]) AS Q3 ON
Q0.CN = Q3.CN))
</pre>
Bitte bearbeiten Sie die Frage und zeigen die Abfrage, die Sie aufgebaut haben. –