【问题标题】:Get dynamic month(column name) which needs to be updated获取需要更新的动态月份(列名)
【发布时间】: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


【解决方案1】:

您可以使用动态 sql 并将您的命令生成为字符串并执行它 示例:

DECLARE @sql NVARCHAR(250)
SET @sql ='Update MyTable Set  columnName'+CONVERT(NVARCHAR(50),DATEPART(mm,GETDATE())) + '=value '
EXEC sp_executesql @sql

【讨论】:

  • 它会给我需要添加的确切列(月)
猜你喜欢
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多