benötigen Hilfe bei einer komplizierten Abfrage. Dies ist ein Auszug aus meinem Tisch:Oracle XE, zählen und zeigen verschiedene Kombinationen von Zeilen basierend auf einer Spalte
USERID SERVICE
1 A
1 B
2 A
3 A
3 B
4 A
4 C
5 A
6 A
7 A
7 B
Ok, würde ich die Abfrage alle möglichen Kombinationen zurückkehren möge und anzuzeigen, die mit ihren jeweiligen Zählungen in meiner Tabelle existieren auf der Basis der Service-Spalte. Zum Beispiel hat der erste Benutzer A- und B-Service, dies ist eine Kombination, die einmal aufgetreten ist. Der nächste Benutzer hat nur den Dienst A, dies ist eine weitere Kombination, die einmal aufgetreten ist. Drittens Benutzer hat Service A und B, hat dies schon einmal passiert ist, und die Zählung für diese Kombination ist 2 jetzt usw. Also meine Ausgabe basierend auf diesem speziellen Eingang eine Tabelle wie folgt sein würde:
A AB AC ABC B BC
3 3 1 0 0 0
So zu klären ein bisschen mehr, wenn es 3 Dienste gibt, dann gibt es 3! mögliche Kombinationen; 3x2x1 = 6 und sie sind A, B, C, AB, AC, BC und ABC. Und meine Tabelle sollte die Anzahl der Benutzer enthalten, denen diese Kombination von Diensten zugewiesen wurde.
Ich habe versucht, den Aufbau einer Matrix diese Abfrage verwenden und dann alle, zählt die CUBE-Funktion:
select service_A, service_B, service_C from
(select USERID,
max(case when SERVICE =A then 1 else null end) service_A,
max(case when SERVICE =B then 1 else null end) service_B,
max(case when SERVICE =C then 1 else null end) service_C
from SOME_TABLE)
group by CUBE(service_A, service_B,service_C);
Aber ich habe nicht die Anzahl aller Kombinationen erhalten. Ich brauche nur Kombinationen, die passiert sind, also zählt 0 ist nicht notwendig, aber es ist in Ordnung, sie anzuzeigen. Vielen Dank.
Sie haben eine Reihe von möglichen Kombinationen? Das heißt, wissen Sie im Voraus, wie viele Spalten Ihre Abfrage zurückgeben wird? Wenn nicht, können Sie es nicht mit einer einfachen Abfrage tun, aber Sie brauchen etwas Dynamisches (und dann kann es schwierig sein, eine Ergebnismenge mit einer unbekannten Anzahl von Spalten zu behandeln) – Aleksej
Ich weiß, welche Dienste zur Verfügung stehen, zum Beispiel gibt es 10 Dienstleistungen, die eine Person haben kann. So ist es möglich, die Berechnung zu machen und zu finden, dass es 10 gibt! Anzahl der verschiedenen Kombination von Dienstleistungen, die eine große Anzahl ist. Das wäre also die maximale Anzahl der Spalten. Aber die meisten von ihnen werden zählen 0, das Problem ist, ich weiß nicht welche, also muss ich alles berechnen. – Hrvoje85