0

Ich muss einen allgemeinen Bericht über einen LKW in einem Unternehmen erstellen.Allgemeiner Bericht von Paar Tabellen mit inneren Verbindungen

Ich habe diese Tabellen in meinem Schema:

Schema Bild:

enter image description here

Grundsätzlich, ich brauche eine Tabelle zu erstellen, den folgenden enthalten:

| Ort | LKW | TotalOfCampaings | CampaingsWithCompleteStatus | CampaingsWithInProcessStatus |

  • Lage: Lage des Lkws, ist in der LKW-Tabelle.
  • LKW: Anzahl der LKWs nach Standort.
  • TotalOfCampaings: Gesamtzahl der Campings nach Standort und Lkw.
  • CampaingsWithCompleteStatus: Gesamtzahl der abgeschlossenen Campaigns, deren Status in der Tabelle Campaing Control steht.
  • CampaingsWithInProcessStatus: Gesamtzahl der Kampagnen nicht abgeschlossen.

Campaing = Bestellung, um einen oder mehrere LKW zu reparieren.

Ich versuchte mit einer inneren Joins Querys, aber ich kann nicht bekommen, was ich für den allgemeinen Bericht erwarte.

Ich würde mich freuen, mir dabei helfen!

Antwort

0
SELECT * 
FROM 
    -- Prepare the base data for the report 
    (SELECT location, COUNT(*) AS Trucks FROM Truck GROUP BY location) loc 
    -- The statistics needed, make sure it is 1 to 1 
    -- The status value just guess as you did not mention in the question 
    OUTER APPLY 
    (
     SELECT 
      COUNT(*) AS TotalOfCampaings, 
      SUM(CASE WHEN cc.campaing_status = 'Complete' THEN 1 ELSE 0 END) AS CampaingsWithCompleteStatus, 
      SUM(CASE WHEN cc.campaing_status = 'InProcess' THEN 1 ELSE 0 END) AS CampaingsWithInProcessStatus 
     FROM CampaingControl cc INNER JOIN Truck t ON cc.vin = t.vin 
     WHERE t.location = loc.location 
    ) stat 
+0

Eric Ich schätze so sehr Ihre Hilfe, Ihre Abfrage funktioniert perfekt. :) – TimeToCode

+0

Eric, noch eine Frage, ich muss in der Lkw-Spalte zählen, nur die Lastwagen mit einer oder mehreren Kampagnen, spielt keine Rolle, ob die Kampagne abgeschlossen oder im Gange sind. – TimeToCode

+0

@TimeToCode Wenn Sie die 'NULL' in 0 konvertieren müssen, können Sie' ISNULL (, 0) 'in der Anweisung' SELECT' verwenden – Eric

Verwandte Themen