MySQL pivot-Tabelle
Wenn ich eine MySQL-Tabelle suchen so etwas wie dieses:
Firmenname Aktion pagecount ------------------------------- Unternehmen EINE PRINT 3 Unternehmen EINE PRINT 2 Unternehmen EINE PRINT 3 Unternehmen B E Firma B PRINT 2 Firma B PRINT 2 Firma B PRINT 1 Unternehmen EINE PRINT 3
Ist es möglich, eine MySQL-Abfrage zu erhalten eine Ausgabe wie diese:
Firmenname E-MAIL DRUCKEN 1-Seiten DRUCKEN von 2 Seiten 3 Seiten DRUCKEN ------------------------------------------------------------- CompanyA 0 0 1 3 Unternehmenb 1 1 2 0
Die Idee ist, dass pagecount
können variieren, so dass die Ausgabe der Spalte Betrag sollte das widerspiegeln, eine Spalte für jedes action
/pagecount
- pair-Mädchen und dann die Zahl der Treffer pro company_name
. Ich bin mir nicht sicher, ob dies wird als eine pivot-Tabelle, aber jemand schlug vor, dass?
Es heißt Schwenk-und es ist viel, viel schneller, um diese transformation, die außerhalb von SQL.
Excel-rips durch Dinge wie diese, es ist wirklich schwierig in MySQL, da es kein "KREUZTABELLE" - operator 🙁
Ja, es ist zurzeit von hand gemacht in Excel, und wir sind versucht, zu automatisieren.
Hier fand ich Schritt für Schritt Beispiel: automatisieren von pivot-Tabellen. und dieser
es hängt wirklich davon ab, was Sie und Ihre Kollegen halten einfacher. Technologie gefangen, die ganz ein bisschen, da ich geschrieben das Kommentar (vor 4 Jahren) also es ist völlig bis zu dem, was Sie fühlen ist besser - sei es in der Anwendung oder SQL. Zum Beispiel bei meiner Arbeit beschäftigen wir uns mit ähnlichen problem, aber wir sind beide kombiniert SQL-und in-app-Ansatz. Im Grunde, kann ich dir nicht helfen anderen, als den rechthaberisch Antwort und das ist nicht das, was Sie brauchen 🙂
Excel-rips durch Dinge wie diese, es ist wirklich schwierig in MySQL, da es kein "KREUZTABELLE" - operator 🙁
Ja, es ist zurzeit von hand gemacht in Excel, und wir sind versucht, zu automatisieren.
Hier fand ich Schritt für Schritt Beispiel: automatisieren von pivot-Tabellen. und dieser
es hängt wirklich davon ab, was Sie und Ihre Kollegen halten einfacher. Technologie gefangen, die ganz ein bisschen, da ich geschrieben das Kommentar (vor 4 Jahren) also es ist völlig bis zu dem, was Sie fühlen ist besser - sei es in der Anwendung oder SQL. Zum Beispiel bei meiner Arbeit beschäftigen wir uns mit ähnlichen problem, aber wir sind beide kombiniert SQL-und in-app-Ansatz. Im Grunde, kann ich dir nicht helfen anderen, als den rechthaberisch Antwort und das ist nicht das, was Sie brauchen 🙂
InformationsquelleAutor peku | 2011-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese im Grunde ist eine pivot-Tabelle.
Ein nettes tutorial, wie Sie diese erreichen können hier gefunden werden: http://www.artfulsoftware.com/infotree/qrytip.php?id=78
Empfehle ich die Lektüre dieses post und Anpassung dieser Lösung für Ihre Bedürfnisse.
Update
Nachdem der link oben ist aktuell nicht mehr verfügbar ich fühle mich verpflichtet, Ihnen einige zusätzliche Informationen, die für alle von Ihnen auf der Suche für mysql pivot Antworten hier. Es hatte wirklich eine große Menge an Informationen, und ich werde nicht alles von dort hier (noch mehr, da ich einfach nicht kopieren möchten Ihr umfangreiches wissen), aber ich werde ein paar Tipps geben, wie man mit pivot-Tabellen die sql-Weise in der Regel mit dem Beispiel von peku, der die Frage stellt in den ersten Platz.
Vielleicht der link kommt bald wieder, ich ' ll halten Sie ein Auge heraus für Sie.
Die Tabellenkalkulation Weg...
Viele Menschen verwenden Sie einfach ein tool wie MSExcel, OpenOffice oder einer anderen Tabellenkalkulation-tools für diesen Zweck. Dies ist eine gültige Lösung, kopieren Sie einfach die Daten dorthin und verwenden Sie die tools, die GUI bieten, diese zu lösen.
Aber... das war nicht die Frage, und es könnte sogar dazu führen, dass einige Nachteile, wie, wie man die Daten in die Tabellenkalkulation, problematische Skalierung und so weiter.
Der SQL Weg...
Seine Tabelle sieht ungefähr so aus:
Nun Einblick in seine/Ihre gewünschte Tabelle:
Den Zeilen (
EMAIL
,PRINT x pages
) ähneln Bedingungen. Die wichtigste Gruppierung ist durchcompany_name
.Um die Bedingungen dieser eher shouts für die Verwendung der
CASE
-Anweisung. Um die Gruppe etwas, gut verwenden ...GROUP BY
.Die grundlegende SQL Bereitstellung dieser Drehpunkt kann wie folgt Aussehen:
Sollte dies das gewünschte Ergebnis ist sehr schnell. Der große Nachteil dieses Ansatzes ist, desto mehr Zeilen, die Sie möchten in Ihrer pivot-Tabelle, die mehrere Bedingungen definieren Sie in Ihrer SQL-Anweisung.
Diese behandelt werden können, auch deshalb Menschen neigen dazu, zu verwenden vorbereitete Anweisungen, Routinen, Zähler und so.
Einige weitere links zu diesem Thema:
der link scheint zu funktionieren jetzt... wenn es immer weiter runter geht wieder, versuchen Sie diese : Google-cache von webcache.googleusercontent.com/... oder auf der Internet-Wayback-Maschine (web.archive.org/web/20070303120558*/artfulsoftware.com/infotree/queries.php)
link ist zugänglich unter der url artfulsoftware.com/infotree/qrytip.php?id=78
Es ist ein weiterer Weg zur Erzeugung einer pivot-Tabelle ohne Verwendung von "if", "case" oder "GROUP_CONCAT": "en.wikibooks.org/wiki/MySQL/Pivot_table
schon gepostet, ein quesiombut es war gekennzeichnet duplizieren.
InformationsquelleAutor Bjoern
Meine Lösung ist in T-SQL ohne Zapfen:
Dies funktioniert für mich, auch auf PostgreSQL. Ich bevorzuge diese Methode, als der Kreuztabelle Erweiterung auf Postgres als dies ist Reiniger
"Meine Lösung ist in T-SQL ohne Zapfen:" Nicht nur SQL-Server-es sollte auf den meisten Datenbank-Anbieter folgt dem ANSI-SQL-standards. Beachten Sie, dass
SUM()
funktioniert nur mit numerischen Daten, wenn Sie ned zu pivot-Zeichenfolgen, die Sie verwendenMAX()
InformationsquelleAutor RRM
For MySQL können Sie direkt die Bedingungen in
SUM()
Funktion und es wird bewertet als Boolean0
oder1
und somit können Sie sich Ihre Zählung, basierend auf Ihren Kriterien ohne Verwendung vonIF/CASE
AussagenDEMO
Das ist ein wirklich toller. Wissen Sie, ob dies ist Standard-konformes, die über andere Plattformen (wie z.B. Postgres)?
Nicht seine nur für Mysql-spezifische
Ich fügte hinzu, ein weiterer standard-SQL-version. Postgres besitzt auch eine dedizierte
crosstab()
- Funktion.Funktioniert auch für SQLite
InformationsquelleAutor M Khalid Junaid
Für dynamische pivot, verwenden Sie
GROUP_CONCAT
mitCONCAT
.Die GROUP_CONCAT Funktion verkettet Zeichenfolgen, die aus einer Gruppe in einem string mit verschiedenen Optionen.
DEMO HIER
Pacerier, der wahre Mensch aber für dynamische schwenkbaren es ist eines der besten Ansatz
Dies funktioniert gut, wenn Sie viele Werte in der Spalte "Aktionen" oder erwarten, dass die Liste mit der Zeit wachsen, wie das schreiben einer case-Anweisung wird für jeden Wert kann zeitaufwendig und schwer zu halten up-to-date.
InformationsquelleAutor Abhishek Gupta
Einen stardard-SQL version mit Boolesche Logik:
SQL Fiddle.
Wie?
TRUE OR NULL
ErträgeTRUE
.FALSE OR NULL
ErträgeNULL
.NULL OR NULL
ErträgeNULL
.Und
COUNT
zählt nur die nicht-null-Werte. Voilá.Aber wie würden Sie wissen, dass es drei Spalten? Was, wenn es 5? 10? 20?
Das Beispiel in der Frage zu suggerieren scheint. So oder so, der SQL Anforderungen zu wissen, der return-Typ. ein ganz dynamische Abfrage ist nicht möglich. Wenn die Anzahl der Ausgabe-Spalten variieren kann, benötigen Sie zwei Schritte: 1. erstellen Sie die Abfrage, 2: führen Sie es aus.
InformationsquelleAutor Erwin Brandstetter
Gibt es ein tool namens MySQL-Pivot-Tabellen-generator, kann es helfen, erstellen Sie web-basierte pivot-Tabelle, können Sie später in excel exportieren(wenn Sie möchten). es kann funktionieren, wenn die Daten in einer einzelnen Tabelle oder in mehreren Tabellen .
Alles, was Sie tun müssen, ist geben Sie die Daten Quelle der Spalten (es unterstützt dynamische Spalten), die Zeilen , die Werte in die Körper der Tabelle und Beziehung (falls vorhanden)
Die Homepage von diesem tool ist http://mysqlpivottable.net
InformationsquelleAutor Peter Green
Richtige Antwort ist:
other_value
Tabelle?InformationsquelleAutor Talha
InformationsquelleAutor irba