【问题标题】:Update query using inner join使用内部联接更新查询
【发布时间】:2015-08-01 22:26:22
【问题描述】:
为什么在这部分存储过程中出现以下语法错误:
关键字“FROM”附近的语法不正确。
WITH CTE_Residence_Overtime
AS
(
SELECT *
FROM #Residence
)
UPDATE t1
SET t1.over_time = t1.over_time + CONVERT(TIME, CAST(CTE_Residence_Overtime.overtimeHours AS VARCHAR(2))
FROM r_overtime AS t1
INNER JOIN CTE_Residence_Overtime
ON t1.[trans_date] = CTE_Residence_Overtime.[dayDate];
【问题讨论】:
标签:
sql
sql-server
stored-procedures
inner-join
common-table-expression
【解决方案1】:
您在set 上缺少一个结束括号:
SET t1.over_time = t1.over_time +
CONVERT(TIME,
CAST(CTE_Residence_Overtime.overtimeHours AS VARCHAR(2)
)
)
------------------------------^
【解决方案2】:
我觉得你少了一个括号
WITH CTE_Residence_Overtime
AS
(
SELECT *
FROM #Residence
)
UPDATE t1
SET t1.over_time = t1.over_time + CONVERT(TIME, CAST(CTE_Residence_Overtime.overtimeHours AS VARCHAR(2)))
FROM r_overtime AS t1
INNER JOIN CTE_Residence_Overtime
ON t1.[trans_date] = CTE_Residence_Overtime.[dayDate];
【解决方案3】:
缺少一个括号会使您的生活变得非常忙碌!
WITH CTE_Residence_Overtime
AS
(
SELECT *
FROM #Residence
)
UPDATE t1
SET t1.over_time = t1.over_time + CONVERT(TIME, CAST(CTE_Residence_Overtime.overtimeHours AS VARCHAR(2)))
FROM r_overtime AS t1
INNER JOIN CTE_Residence_Overtime
ON t1.[trans_date] = CTE_Residence_Overtime.[dayDate];