我在 SQL Server 中有一个 Staff
表,其中包含 Salary
列,我的目标是计算每月金额,然后显示它。我想出了两种方法来完成这项任务,但第二种方法不起作用。
这是我的代码:
第一种方法
SELECT
FirstName, FamilyName,
CAST(Salary / 12 AS DECIMAL(8,2)) AS AnnualSalary
FROM
[dbo].[Staff]
第二种方法
DECLARE @monthlySalary DECIMAL(8,2)
SELECT @monthlySalary = CAST(Salary / 12 AS DECIMAL(8, 2))
FROM [dbo].[Staff]
SELECT @monthlySalary AS MonthlySalary
FROM [dbo].[Staff]
在第二种方法中,它只计算 Staff 表中的第一个工资,然后将结果复制到其他行中。你能帮我找到将计算应用于表中所有行的方法吗?
预期结果
错误
员工表
最佳答案
原因
@annualSalary
有一个固定值它不是一个函数
这一行将为变量分配一个值:
SELECT @annualSalary = CAST(Salary/12 as DECIMAL(8,2))
FROM [dbo].[Staff]
在第二个命令中,您选择一个分配给@annualSalary
变量的固定值,并且在选择查询中的每一行重复该值
SELECT @annualSalary AS AnnualSalary
FROM [dbo].[Staff]
更多信息位于
建议
如果目标是计算您应该使用的所有工资的平均值
SELECT AVG(CAST(Salary / 12 AS DECIMAL(8, 2)))
FROM [dbo].[Staff]
否则你应该使用
SELECT CAST(Salary / 12 AS DECIMAL(8, 2))
FROM [dbo].[Staff]
关于sql - 无法对 SQL Server 中的所有行应用计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48607383/