我有一个表格,其中列名为total_days
,此列包含员工休假的天数
我想要的是,我想在参数@NoOfDaysForDelayApproval
中使用上面的列。
我尝试的是
我得到了如下所需的输出
[![在此处输入图像说明] [1]] [1]
请建议做什么?
更新
抱歉无法格式化
答案 0 :(得分:1)
尝试将您的变量声明为decimal
而不是int
declare @NoOfDaysForDelayApproval decimal(9,2)
看起来Total_Days
列的数据类型是十进制的,因此您可以创建一个类似的数据类型变量来存储sum的值。
参见图片中的演示:
答案 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