Ich habe die folgende Abfrage:SUM auf der Basis verschiedenen Typen
SELECT
ISNULL(DrugName,'Sub Total:') as Drug,
SUM(COUNT) as Count,
Percentage
FROM
(
SELECT
DrugName,
DrugCategoryName,
COUNT(*) as Count,
CONVERT(DECIMAL(10,2),COUNT(*) * 100.0/SUM(COUNT(*)) over()) as Percentage
FROM
Visit V
INNER JOIN Drug D on
V.DrugID = D.DrugID
INNER JOIN DrugCategory DC on
D.DrugCategoryID = DC.DrugCategoryID
GROUP BY GROUPING SETS
((DrugName, DrugCategoryName))
) a
GROUP BY GROUPING SETS
((DrugName, DrugCategoryName, Percentage), (DrugCategoryName))
, die folgenden Ergebnisse erzielt:
Drug Count Percentage
Amphetamines 401 4.24
Benzodiazapine 435 4.60
Biodone 459 4.85
Sub Total: 1295 NULL
Brown Heroin 436 4.61
Buprenorphine 396 4.18
Cocaine 444 4.69
Did not inject 404 4.27
Endone 450 4.75
Fentanyl Patch 404 4.27
Heroin 1365 14.42
Heroin & Cocaine 448 4.73
Ice/Crystal/Meth 889 9.39
Sub Total: 5236 NULL
Kapanol 427 4.51
Methadone 430 4.54
Methadone Syrup 394 4.16
Morphine 417 4.41
MS Contin 438 4.63
MS Mono 424 4.48
Other Amphetamines 404 4.27
Sub Total: 2934 NULL
Was ich brauche auch zu tun ist, um die Zwischensumme Prozent berechnen, so Zum Beispiel ist die erste Untersumme 1295, also würde ein Prozentsatz basierend auf 1295 + 5236 + 2934 berechnet und ein Wert von 13,68% erhalten, usw. für die anderen Untersummenzeilen.
Wie könnte dies dynamisch geschehen, also wird es unabhängig von der Anzahl der Subsummen korrekt berechnet?
haben Sie SELECT ISNULL (DrugName versuchte dabei, 'Total:') als Drug, SUM (COUNT) als Count, SUM (Prozent)/SUM (COUNT) AS perc ... dann alle wie vorher – Cato
Ja, ich danke @Cato - nicht gut. – Philip
Sie werden dort eine 'Order by DrugCategoryName' brauchen. – shawnt00