2016-07-17 11 views
-2

Ich versuche, die Gesamtsumme aller Modelle von jeder Agentur zu erhalten und wählen Sie die Anzahl der einzelnen Modelle.SQL Server: Wählen Sie die Gesamtsumme aller Modelle aus jeder Agentur und wählen Sie die Anzahl der einzelnen Modelle

Wir haben verschiedene Tabellen in einer Datenbank von Autos Agentur habe ich die nächste Abfrage:

SELECT distinct (c.check) ,cm.description as agency, cms.description as model, co.result 
FROM check c 
INNER JOIN check_obd co on c.idcheck=co.idcheck 
INNER JOIN vehicular_census vc on vc.idvehicularcensus = c.idvehicularcensus 
LEFT JOIN cat_mark cm on vc.idmark=cm.key 
LEFT JOIN cat_mark_submark cms on vc.idmark_submark=cms.idmark_submark 
WHERE c.operation_status=5 

Diese Abfrage ist nicht ideal, da sie produziert:

Before

Ich möchte die Ergebnis wie folgt aussehen:

After

Wie kann ich die obige Abfrage ändern, um mein gewünschtes Ergebnis zu erhalten?

+0

Was Sie suchen, kann durch eine einfache GROUP BY-Anweisung mit Zählimpulsen erreicht werden. z.B. 'SELECT cm.description AS-Agentur, COUNT (cms.description) OVER (PARTITION BY cm.description) AS gesamt, cms.description AS-Modell, COUNT (*) AS-Menge FROM GROUP BY cm.description, cms .description' ... Um diese spezifische Ausgabe zu erhalten, müssten Sie wahrscheinlich der Ergebnismenge eine Zeilennummer (partitioniert nach Agentur) zuordnen und die Agentur/Summe null machen, wenn die Zeilennummer nicht 1 ist. – ZLK

+0

Hi ZLK I rn die nächste Abfrage: Hallo ZLK Ich führe die nächste Abfrage aus: SELECT distinct cm.description als Agentur, count (cm.description) OVER (PARTITION VON cm.descripcion) als total, cms.description als Modell, count (cms. Beschreibung) OVER (PARTITION VON cms.description) als Zwischensumme FROM Überprüfung c INNER JOIN check_obd co auf c.idcheck = co.idcheck INNER JOIN vehicular_census vc auf vc.idvehicularcensus = c.idve hicularcensus LEFT JOIN cat_mark cm auf vc.idmark = cm.key LINKS cat_mark_submark cms auf vc.idmark_submark JOIN = cms.idmark_submark WHERE c.operation_status = 5 um von cm.description –

+0

Die vorherige Abfrage mir dieses Ergebnis: https: //1drv.ms/i/s!Ak2f8MCNYPvQgyI_Rd8lLKP15oB8 ***** Wie kann ich die verschiedenen Gesamtergebnisse löschen, um nur eine Summe für jede Agentur zu erhalten? , danke: 9 –

Antwort

0

Hier ist ein Beispiel dafür, wie Sie „entfernen“, um das überschüssige Material könnte (die aktuelle Abfrage mit Ihnen zur Verfügung gestellten):

SELECT MAX(CASE WHEN rn = 1 THEN colagency ELSE '' END) agency 
    , MAX(CASE WHEN rn = 1 THEN CAST(total AS VARCHAR(255)) ELSE '' END) total 
    , model 
    , subtotal 
FROM (SELECT distinct cm.description as colagency 
    , count(cm.description) OVER (PARTITION BY cm.descripcion) as total 
    , cms.description as model 
    , count(cms.description) OVER (PARTITION BY cms.description) as subtotal 
    , row_number() over (partition by cm.description order by cms.description) rn 
FROM check c 
INNER JOIN check_obd co on c.idcheck=co.idcheck 
INNER JOIN vehicular_census vc on vc.idvehicularcensus = c.idvehicularcensus 
LEFT JOIN cat_mark cm on vc.idmark=cm.key 
LEFT JOIN cat_mark_submark cms on vc.idmark_submark=cms.idmark_submark 
WHERE c.operation_status=5) T 
GROUP BY colagency, model, subtotal 
ORDER BY colagency 

es Umhüllen Ihre aktuelle Abfrage in einer Unterabfrage mit einem row_number() Funktion Im Wesentlichen und dann mache alles, was nicht die erste Zeile für eine "Agentur" ist, leer.

+0

Welches nächste Bild? – ZLK

+0

Hallo ZLK Ich führe die gestellte Abfrage und es scheint, alle wiederholten vales zu löschen, aber die Ergebnisse der Summen für jede Agentur werden auf die letzte Position wie das nächste Bild gedruckt: https://1drv.ms/i/s! Ak2f8MCNYPvQgyQ2JIQcASqMCB3T, wie kann ich jede Summe am Anfang jedes Submodells wie das in der Hauptfrage gezeigte Bild 2 setzen? :), übrigens vielen Dank für die investierte Zeit –

+0

OK. Ich * glaube * die obige Bearbeitung hat das Problem behoben. Die äußere Abfrage wird im Wesentlichen überarbeitet (mit einer kleinen Bearbeitung der inneren Abfrage), sodass Sie die richtige Gruppierung und die erwarteten Ergebnisse erhalten. – ZLK

Verwandte Themen