更新查询、嵌套iif集和联接表

ivqmmu1c  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(434)

尝试使用内部联接进行更新查询,并使集合反映当前月数。
需要语法帮助来更新包含月份列的联接表,需要更新月份(date())+1,+2。尝试使用下面嵌套的iif作为“iif(month(date())=”1”,(set table.c=table2.c2……)完成下面的代码。
结果是语法错误
使用用于更新的值更新sql tablelinked excel的示例数据

  1. Update dbo_MasterSalesForecast_Test
  2. INNER JOIN MasterSalesForecastUpdate
  3. ON (dbo_MasterSalesForecast_Test.SubTo=MasterSalesForecastUpdate.Item) AND( dbo_MasterSalesForecast_Test.Planner=MasterSalesForecastUpdate.Planner)
  4. IIF(Month(Date()) ="1",( SET
  5. dbo_MasterSalesForecast_Test.[YY:1] = [MasterSalesForecastUpdate].[YYJan],
  6. dbo_MasterSalesForecast_Test.[YY:2] = [MasterSalesForecastUpdate].[YYFan],
  7. dbo_MasterSalesForecast_Test.[YY:3] = [MasterSalesForecastUpdate].[YYMar])
  8. ,
  9. IIF(Month(Date())="2",( SET
  10. dbo_MasterSalesForecast_Test.[YY:2]=[MasterSalesForecastUpdate].[YYFeb],
  11. dbo_MasterSalesForecast_Test.[YY:3]=[MasterSalesForecastUpdate].[YYMar],
  12. dbo_MasterSalesForecast_Test.[YY:4]=[MasterSalesForecastUpdate].[YYApr])
  13. ,
  14. IIF(Month(Date())="3",( SET
  15. dbo_MasterSalesForecast_Test.[YY:3]=[MasterSalesForecastUpdate].[YYMar],
  16. dbo_MasterSalesForecast_Test.[YY:4]=[MasterSalesForecastUpdate].[YYApr],
  17. dbo_MasterSalesForecast_Test.[YY:5]=[MasterSalesForecastUpdate].[YYMay])
  18. ,
  19. IIF(Month(Date())="4",(SET
  20. dbo_MasterSalesForecast_Test.[YY:4]=[MasterSalesForecastUpdate].[YYApr],
  21. dbo_MasterSalesForecast_Test.[YY:5]=[MasterSalesForecastUpdate].[YYMay],
  22. dbo_MasterSalesForecast_Test.[YY:6]=[MasterSalesForecastUpdate].[YYJun])
  23. ,
  24. IIF(Month(Date())="5",(SET
  25. dbo_MasterSalesForecast_Test.[YY:5]=[MasterSalesForecastUpdate].[YYMay],
  26. dbo_MasterSalesForecast_Test.[YY:6]=[MasterSalesForecastUpdate].[YYJun],
  27. dbo_MasterSalesForecast_Test.[YY:7]=[MasterSalesForecastUpdate].[YYJul])
  28. ,
  29. IIF(Month(Date())="6",(SET
  30. dbo_MasterSalesForecast_Test.[YY:6]=[MasterSalesForecastUpdate].[YYJun],
  31. dbo_MasterSalesForecast_Test.[YY:7]=[MasterSalesForecastUpdate].[YYJul],
  32. dbo_MasterSalesForecast_Test.[YY:8]=[MasterSalesForecastUpdate].[YYAug])
  33. ,
  34. IIF(Month(Date())="7",(SET
  35. dbo_MasterSalesForecast_Test.[YY:7]=[MasterSalesForecastUpdate].[YYJul],
  36. dbo_MasterSalesForecast_Test.[YY:8]=[MasterSalesForecastUpdate].[YYAug],
  37. dbo_MasterSalesForecast_Test.[YY:9]=[MasterSalesForecastUpdate].[YYSep])
  38. ,
  39. IIF(Month(Date())="8",(SET
  40. dbo_MasterSalesForecast_Test.[YY:8]=[MasterSalesForecastUpdate].[YYAug],
  41. dbo_MasterSalesForecast_Test.[YY:9]=[MasterSalesForecastUpdate].[YYSep],
  42. dbo_MasterSalesForecast_Test.[YY:10]=[MasterSalesForecastUpdate].[YYOct])
  43. ,
  44. IIF(Month(Date())="9",(SET
  45. dbo_MasterSalesForecast_Test.[YY:9]=[MasterSalesForecastUpdate].[YYSep],
  46. dbo_MasterSalesForecast_Test.[YY:10]=[MasterSalesForecastUpdate].[YYOct],
  47. dbo_MasterSalesForecast_Test.[YY:11]=[MasterSalesForecastUpdate].[YYNov])
  48. ,
  49. IIF(Month(Date())="10",(SET
  50. dbo_MasterSalesForecast_Test.[YY:10]=[MasterSalesForecastUpdate].[YYOct],
  51. dbo_MasterSalesForecast_Test.[YY:11]=[MasterSalesForecastUpdate].[YYNov],
  52. dbo_MasterSalesForecast_Test.[YY:12]=[MasterSalesForecastUpdate].[YYDec])
  53. ,
  54. IIF(Month(Date())="11",(SET
  55. dbo_MasterSalesForecast_Test.[YY:11]=[MasterSalesForecastUpdate].[YYNov],
  56. dbo_MasterSalesForecast_Test.[YY:12]=[MasterSalesForecastUpdate].[YYDec],
  57. dbo_MasterSalesForecast_Test.[YY+1:1]=[MasterSalesForecastUpdate].[YY+1Jan])
  58. ,
  59. IIF(Month(Date())="12"(SET
  60. dbo_MasterSalesForecast_Test.[YY:12]=[MasterSalesForecastUpdate].[YYDec],
  61. dbo_MasterSalesForecast_Test.[YY+1:1]=[MasterSalesForecastUpdate].[YY+1Jan],
  62. dbo_MasterSalesForecast_Test.[YY+1:02]=[MasterSalesForecastUpdate].[YY+1Feb])
  63. )))))))))));
6ss1mwsb

6ss1mwsb1#

不能有条件地引用字段。字段在查询对象中必须是静态的,然后可以在iif()中为每个字段确定要更新的值。使用vba构建和执行action sql语句。

  1. CurrentDb.Execute "UPDATE dbo_MasterSalesForecast_Test " & _
  2. "INNER JOIN MasterSalesForecastUpdate " & _
  3. "ON (dbo_MasterSalesForecast_Test.SubTo=MasterSalesForecastUpdate.Item) " & _
  4. "AND (dbo_MasterSalesForecast_Test.Planner=MasterSalesForecastUpdate.Planner) " & _
  5. "SET [YY:" & Month(Date()) & "] = [YY" & Format(Date(),"mmm") & "]," & _
  6. "[YY:" & Month(DateAdd("m",1,Date())) & "] = [YY" & Format(DateAdd("m",1,Date()),"mmm") & "]," & _
  7. "[YY:" & Month(DateAdd("m",2,Date())) & "] = [YY" & Format(DateAdd("m",2,Date()),"mmm") & "]"

相关问题