2017-03-05 6 views
0

ich diese beiden SQL-Skripts in einen braucht: Menge Kunden pro Stadt und die insgesamt Kunden pro Land von Adventureworks-DatenbankGet Menge an Kunden pro Stadt und die insgesamt Kunden pro Land Ein Tisch

ich fast zu bekommen habe es getan, das Problem ist, dass ich eine einzige TABLE machen muss, die Probleme mit Multiple COUNT hat.

USE AdventureWorks2014 
SELECT person.Address.City, Count (*) AS Total 
FROM person.Address 
INNER JOIN person.StateProvince 
    ON person.Address.StateProvinceID = person.StateProvince.StateProvinceID 
GROUP BY person.Address.City 
ORDER BY Total DESC 

First scrip Returns

USE AdventureWorks2014 

SELECT person.StateProvince.CountryRegionCode, Count (*) AS Total 
FROM person.Address 
INNER JOIN person.StateProvince 
    ON person.Address.StateProvinceID = person.StateProvince.StateProvinceID 
GROUP BY person.StateProvince.CountryRegionCode 
ORDER BY Total DESC 

Second script returns:

+0

Sie sollten die gewünschten Ergebnisse anzeigen. –

+0

Lassen Sie mich es dann bearbeiten –

Antwort

0

Der einfachste Weg ist ein UNION ALL. Sie können jedoch nicht im Wesentlichen die gleiche Sache mit GROUPING SETS:

SELECT COALESCE(a.City, sp.CountryRegionCode) as City_or_Region, 
     Count(*) AS Total 
FROM person.Address a INNER JOIN 
    person.StateProvince sp 
    ON a.StateProvinceID = sp.StateProvinceID 
GROUP BY GROUPING SETS ((a.City), (sp.CountryRegionCode)) 
ORDER BY Total DESC; 

Beachten Sie, dass dies ein paar Annahmen über die Daten macht:

  • City ist nie NULL.
  • City und CountryRegionCode haben nie die gleichen Werte (Sie können diese bei Bedarf in separate Spalten aufteilen).
+0

Ich bekomme den Fehler "Ungültiger Spaltenname 'CountryRegionCode'." Vielleicht, weil CountryRegionCode keine Spalte von person.Addres ist –