2

わかりましたので、コードでこれを行っていますが、データベースで行う方がよいかどうか疑問に思っています。

SELECT sum(x) as x, sum(y) as y, sum(z) as z from tblRWNPSStat

私がやりたいことは、すべての数字の合計を取ることです

total=x+y+z

そして、それらの変数(x、y、z)のそれぞれのパーセンテージを取得します

x/total*100
y/total*100
z/total*100

ストアドプロシージャでこれを行うことは可能ですか? または、コードに固執する必要がありますか?Ps私はsqlserver express r2を使用しているので、T-sqlのソリューションをお願いします

4

2 に答える 2

4

はい、SPで実行できますが、必要ありません:

SELECT SUM(X) as X, 
       CAST(SUM(X) AS FLOAT)/CAST(SUM(X+Y+Z) AS FLOAT ) *100 as Per_X,     
       SUM(Y) as Y, 
       CAST(SUM(Y) AS FLOAT)/CAST(SUM(X+Y+Z) AS FLOAT ) *100 as Per_Y, 
       SUM(Z) as Z, 
        CAST(SUM(Z) AS FLOAT)/CAST(SUM(X+Y+Z) AS FLOAT ) *100 as Per_Z
FROM tblRWNPSStat A 

sqlfiddleをチェックしてください

于 2013-05-24T04:12:33.170 に答える
2

はい、次を使用してストアド プロシージャを作成できます

CREATE PROCEDURE PERCENTAGE 
AS
BEGIN
SET NOCOUNT ON;
DECLARE @TOTAL decimal(10,2);
SET @TOTAL = (SELECT SUM(x) + SUM(y) + SUM(z) FROM tblRWNPSStat);
SELECT 
100* SUM(x)/@TOTAL AS [X %], 
100* SUM(y)/@TOTAL AS [Y %], 
100* SUM(z)/@TOTAL AS [Z %], 
@TOTAL AS [TOTAL] FROM 
tblRWNPSStat
END
GO
于 2013-05-24T03:59:36.127 に答える