Ich habe eine Tabelle (Anmerkung: importiert aus Excel von Mitarbeitern verwendet werden) in Access, das so etwas wie diese enthält:Access SQL Kombinieren mehrerer Spalten und Summieren einer anderen Spalte Verschwenkung über kombinierte Spalte
Associate | Date_Of_First_Call | Date_of_Second_Call | Date_of_Third_Call
Amy | 07/18/2017 | 07/19/2017 | 07/20/2017
Brian | 07/18/2017 | 07/18/2017 | 07/20/2017
Amy | 07/18/2017 | 07/20/2017 |
Carl | 07/19/2017 | 07/20/2017 | 07/21/2017
Ich bin sehr neu zu SQL und von dem, was ich bisher gelernt ...
SELECT Date_Of_First_Call AS CallDate,
SUM(IIF(Associate ="Amy", 1, 0)) AS Amy,
SUM(IIF(Associate= "Brian", 1, 0)) AS Brian,
SUM(IIF(Associate="Carl", 1, 0)) AS Carl,
FROM table_name
GROUP BY Date_Of_First_Call
UNION
SELECT Date_Of_Second_Call AS CallDate,
SUM(IIF(Associate ="Amy", 1, 0)) AS Amy,
SUM(IIF(Associate= "Brian", 1, 0)) AS Brian,
SUM(IIF(Associate="Carl", 1, 0)) AS Carl,
FROM table_name
GROUP BY Date_Of_Second_Call
UNION
SELECT Date_Of_Third_Call AS CallDate,
SUM(IIF(Associate ="Amy", 1, 0)) AS Amy,
SUM(IIF(Associate= "Brian", 1, 0)) AS Brian,
SUM(IIF(Associate="Carl", 1, 0)) AS Carl,
FROM table_name
GROUP BY Date_Of_Third_Call
Gibt mir:
Call Date | Amy | Brian | Carl
07/18/2017 | 2 | 1 |
07/18/2017 | | 1 |
07/19/2017 | | | 1
07/19/2017 | 1 | |
07/20/2017 | 1 | | 1
07/20/2017 | 1 | 1 |
07/21/2017 | | | 1
Schließen! Aber ich mag dies unten statt:
Call Date | Amy | Brian | Carl
07/18/2017 | 2 | 2 |
07/19/2017 | 1 | | 1
07/20/2017 | 2 |1 | 1
07/21/2017 | | | 1
Zur Info: ich oben zur Folge bekommen konnte, wenn ich drei erstellt getrennte Transform/Pivot-Abfragen und unioning sie in eine, aber das erfordert insgesamt vier Abfragen. Also, wenn es einen Weg gibt, es in nur einem zu tun, das großartig wäre! Vielen Dank!
sollten Sie wirklich in die Datenbank Normalisierung lesen. Es ist eine wirklich schlechte Praxis, im Wesentlichen ähnliche Informationen in verschiedenen Spalten in den Tabellen zu speichern. –
Vielen Dank für Ihren Kommentar Erik. Die einzige gemeinsame Information mit diesen drei Spalten ist jedoch, dass sie vom Typ Datum sind. Jede Spalte bezeichnet das Datum, an dem ein Mitarbeiter jemanden anruft und ihnen drei Möglichkeiten gegeben werden, jemanden zu erreichen: 1) Anruf des ersten Datums, 2) Anruf des zweiten Datums und 3) Anruf des dritten Datums. – Mika
Sie alle verweisen auf Anrufe, nicht wahr? Die Tatsache, dass Sie sie summieren möchten, bedeutet, dass sie verwandt sind. Die meisten UNION-Abfragen sind ein Indikator für nicht normalisierte Daten. Und deswegen geraten Sie in Schwierigkeiten. Wenn Sie dies normalisiert speichern würden, würde die Operation weniger Schritte erfordern, wie ich gerade demonstrieren werde. Wenn Sie eine Operation an den Anrufdaten ausführen möchten (z. B. eine Korrektur für eine bestimmte Zeitzone), müssen Sie sie wahrscheinlich auf alle diese Spalten anwenden, während Sie sie nur auf eine anwenden sollten. Richtig normalisiert würde die Beschränkung von maximal 3 Anrufen aufgehoben werden. –