【发布时间】:2015-12-21 06:13:46
【问题描述】:
我有一个查询,它给了我一些数据。我有12 months 说。但它会更新列的数据,比如month12 (因为当前月份是 12 月)
每个月都有12 columns。这是我的查询,
在我的选择查询中,我需要找到需要更新哪个月份的列。
以下是我的查询
select --a.emp_mkey,
@Total_day = Sum(total_day),
@Days_worked = Sum(days_worked)
from emp_mon_day a
where a.emp_mkey = @emp_card_no
and a.month = @actualMonth and Year = @actualYear
group by emp_mkey
if(@Days_worked > 0)
BEGIN
set @actualleavedays =((1.75) / @Total_day) * (@Days_worked)
END
print @actualleavedays
我正在使用SQL - server 2005
更新
那么这里会是哪一个月——month1,month2,...... ???
-- update p_leave_allocation_14122015 a
-- set a.month1 = 8.18
-- where year = a.actualYear and a.emp_card_no = @emp_card_no
如果您想查看整个过程,请告诉我。
【问题讨论】:
-
可以使用动态sql语句声明@sql = 'Update x set Month' +Convert(Nvarchar,DATEPART(mm,GETDATE())) + '=? ......'执行
-
@AhmedGalal:我已经在声明区声明了所有 12 个月,但是为了动态获取它我所做的 shd,请详细说明。
-
将你的sql命令生成为字符串并执行
-
你说的是哪个sql命令??我需要动态月份吗?
-
您可以从当前日期 DATEPART(mm,GETDATE()) 获取动态月份
标签: sql-server sql-server-2005