从表

时间:2015-12-23 13:23:27

标签: sql sql-server sql-server-2005

我有一个表格,其中列名为total_days,此列包含员工休假的天数

我想要的是,我想在参数@NoOfDaysForDelayApproval中使用上面的列。

我尝试的是

我得到了如下所需的输出

[![在此处输入图像说明] [1]] [1]

请建议做什么?

更新

抱歉无法格式化

2 个答案:

答案 0 :(得分:1)

尝试将您的变量声明为decimal而不是int

declare @NoOfDaysForDelayApproval decimal(9,2)

看起来Total_Days列的数据类型是十进制的,因此您可以创建一个类似的数据类型变量来存储sum的值。

参见图片中的演示:

enter image description here

答案 1 :(得分:0)

SQL Server不允许您在没有GROUP BY子句的情况下保留SUM。此外,您不能保持所需输出的变量类型的值。由于我无法理解您的完整问题所以我发布在查询下面;检查它,让我知道这是你正在寻找的,或者你想要任何改变

    DECLARE @XXACL_EMP_DELAY_APPROVAL_V  TABLE 
(Emp_name varchar(10), total_days decimal(18,2), Year INT, MONTH INT)

INSERT INTO @XXACL_EMP_DELAY_APPROVAL_V VALUES
('A',2.00,2015,4),('B',1.00,2015,4),('C',4.00,2015,4),('D',6.00,2015,4), ('A',6.00,2015,4)

DECLARE @NoOfDays INT 

DECLARE @YearValue INT = 2015, @MonthValue INT = 4, @EmpName VARCHAR(10) = 'A'

SELECT  @NoOfDays = SUM(Total_days)
                    FROM @XXACL_EMP_DELAY_APPROVAL_V 
                    WHERE Year = @YearValue AND MONTH = @MonthValue AND Emp_name = @EmpName

SELECT @NoOfDays

SELECT DISTINCT A.Emp_name, A.Sum_of_total_days
FROM @XXACL_EMP_DELAY_APPROVAL_V V1 JOIN (
SELECT V2.Emp_name, SUM(V2.Total_days) AS 'Sum_of_total_days'
                    FROM @XXACL_EMP_DELAY_APPROVAL_V V2
                    WHERE V2.Year = @YearValue AND v2.MONTH = @MonthValue AND v2.Emp_name = @EmpName
                    GROUP BY V2.Emp_name ) A ON V1.Emp_name = A.Emp_Name