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 回答