【发布时间】:2016-01-12 18:20:03
【问题描述】:
我有一个表格,Table1,格式如下:
Country No_Of_Days
XX 5
YY 10
我需要通过将上述表中的天数添加到 Start_date 来更新另一个表 Table2 中的 End_Date 列:
Country Start_Date End_Date Calc_Manual_Flag
XX 25-Dec-16 30-Dec-16 CALC
YY 02-Jan-17 12-Jan-17 CALC
我使用了以下查询,但它似乎不起作用:
UPDATE dbo.Table2
SET End_date =
dateadd(
day,
(SELECT No_Of_Days FROM Table1 WHERE Table2.Country = Table1.Country),Start_Date),
Calc_Manual_Flag = 'CALC'
WHERE Table2.End_Date IS NULL
AND Table2.Start_Date IS NOT NULL
但它似乎无法正常工作。更新似乎没有按预期进行。我收到以下错误消息:
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
请就此提供指导。
【问题讨论】:
-
发生了什么?
-
“工作不正常”是什么意思?你有错误吗?意外的值?
-
我收到消息 0 行已更新
-
对不起,我收到了一条消息……这是我收到的消息
-
Msg 512, Level 16, State 1, Line 1 子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
标签: sql sql-server-2008 dateadd