2016-07-21 1 views
0

J'ai requête:pour cent du montant au niveau de la ligne

select my_year,my_month, L2, PAR1, PAR2, PAR3, Value from table1

pour produire le tableau ci-dessous: enter image description here

Maintenant, je veux calculer pour cent pour chaque ligne. Je dois d'abord ajouter des valeurs (20 + 30 + 40 + 50 + 60 + 70 + 80) puis diviser chaque ligne par la somme. Le résultat devrait être: enter image description here

Puis-je le faire en un seul choix? ou devrais-je calculer la somme dans la deuxième requête, puis faire la jointure?

+0

Vous pouvez le faire dans une sélection avec un sous-select. –

+2

Copie possible de [Comment calculer le pourcentage de chaque ligne dans SQL Server 2012?] (Http://stackoverflow.com/questions/27969675/how-to-calculate-percentage-of-each-row-in-sql-server -2012) –

Répondre

2

Vous pouvez utiliser les fonctions de fenêtre. Pour les données que vous présentez:

select my_year, my_month, L2, PAR1, PAR2, PAR3, Value, 
     Value * 100.0/SUM(Value) OVER() as percent 
from table1; 
+0

merci! pour mon puprose je viens de le faire: Value/sum (Value) Over() – 4est

0

Ceci peut être réalisé en une seule requête, comme suit:

select 
    my_year, 
    my_month, 
    L2, 
    PAR1, 
    PAR2, 
    PAR3, 
    Value, 
    (100.0 * Value)/SUM(Value) OVER() 
from 
    table1 
+1

Je pense que cela produirait une erreur de syntaxe. –

+0

@ TabAlleman oui vous avez raison. J'ai mis à jour ma réponse. Merci! –

+0

merci pour la mise à jour rapide! – 4est