2011-01-06 11 views
0

Frohes neues Jahr!Anzeige% Änderung mit SQL Server

Ich frage mich, ob wir eine SQL-Abfrage in SQL Server schreiben könnten, die die% Änderung anzeigt.

Beispiel, ich bin mit dieser einfachen Abfrage mit dem Ausgang:

Select location, item_sold 
from product 

Location Item_sold 
VA   20 
CA   57 
DC   44 
MA   75 
FL   101 

Nun würde ich wie folgt den gewünschten Ausgang sehen, die das Element aus jeder Position durch die Gesamt geteilt verkauft nehmen.

Location Item_sold   %Chg 
VA   20    7% 
CA   57    19% 
DC   44    15% 
MA   75    25% 
FL   101    34% 
TOTAL   297 
+0

Welche Version von SQL Server verwenden Sie? – Lamak

+0

Ich benutze SQL Server Version 2000/5/8 – joe

Antwort

1

In SQL Server 2005+, können Sie die folgenden Befehle verwenden:

SELECT location, item_sold, CAST(item_Sold AS FLOAT)/(SUM(Item_Sold) OVER()) [%Chg] 
FROM product 

Bei früheren Versionen, versuchen Sie dies:

SELECT A.location, A.item_sold, 
     CAST(A.item_Sold AS FLOAT)/(SELECT SUM(Item_Sold) Ammount FROM product) [%Chg] 
FROM product A 
+0

Danke Lamak. Es klappt. Es zeigt jedoch nicht die Dezimalstelle in der Spalte% von beiden obigen Abfragen. Die item_sold ist eine Ganzzahl. – joe

+0

Kein Problem. In jedem Fall sollte es dich mit Dezimalzahlen zurückgeben, deshalb habe ich eine CAST für item_sold gemacht. Vielleicht sollten Sie es in CAST (item_sold AS NUMERIC (16,4)) oder ähnliches ändern, um die anzuzeigenden Dezimalzahlen explizit zu definieren. – Lamak

+0

Hallo Lamak, ich habe verschiedene Methoden ausprobiert und die Spalte% zeigt immer noch int. Nicht sicher warum. – joe

Verwandte Themen