2015-12-21 48 views
0

我有一個查詢給了我一些數據。我有12 months說。但它會更新該列中的數據說month12(因爲當前月份是十二月)獲取需要更新的動態月份(列名)

有基於每個月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

UPDATE

所以會來何年何月在這裏 - 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 

如果您想查看整個過程,請告訴我們。

+0

您可以使用動態SQL語句 申報@sql =「更新X設置月」 +轉換(nvarchar的, DATEPART(mm,GETDATE()))+'=? ...............' exec –

+0

@AhmedGalal:我已經宣佈所有12個月的聲明區域,但爲了動態獲取它,我請確認。 – BNN

+0

生成你的sql命令爲字符串並執行它 –

回答

1

您可以使用動態SQL並生成命令字符串,執行它 例如:

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

它會給我準確的列(月),需要添加 – BNN