Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用三个表联接进行SQL Server更新_Sql_Sql Server_Oracle - Fatal编程技术网

使用三个表联接进行SQL Server更新

使用三个表联接进行SQL Server更新,sql,sql-server,oracle,Sql,Sql Server,Oracle,我有一个现有的Oracle update语句,我正在尝试将其转换为SQL Server update语句 我已经将SQL从Oracle函数转换为SQL Server函数,如下所示 但当我运行此查询时,它无法理解SQL语句中的别名a。这是错误的 Msg 102,15级,状态1,第1行 中“a”附近的语法不正确 代码: 检查SET语句是否可以在正在更新的列上接收别名。想想看,去掉a。设置a.days\u中的表别名以创建\u联锁。可以解决你的问题。不保证-但您只更新一个表,不需要在集合构造的左侧使用别

我有一个现有的Oracle update语句,我正在尝试将其转换为SQL Server update语句

我已经将SQL从Oracle函数转换为SQL Server函数,如下所示

但当我运行此查询时,它无法理解SQL语句中的别名a。这是错误的

Msg 102,15级,状态1,第1行 中“a”附近的语法不正确

代码:


检查SET语句是否可以在正在更新的列上接收别名。想想看,去掉a。设置a.days\u中的表别名以创建\u联锁。可以解决你的问题。不保证-但您只更新一个表,不需要在集合构造的左侧使用别名。另一个选项可能是UPDATE语句的格式不符合SQL Server的语法规则。您可能需要使用来自。。。。。。设置但是我使用列来连接更新表中的第二个和第三个表。设置a.days\u中的表别名以创建\u联锁。。只是建议你去掉那个a。例子没有其他人。请看@lptr的答案。让我试试这个。看起来很有希望。这是我正在玩的。这种格式是我正在寻找的,我试图在加入之前将此表添加为。现在我明白了,我在最后加了一句。谢谢…@user13771510。。子查询中的左联接不是“左”联接,因为右表p在where子句中被引用。。其中b.cal_date>=CASTp.createddate作为日期
UPDATE related_opty_plan_n_dim a
SET a.days_to_create_interlock = (SELECT COUNT(*) 
                                  FROM date_dim b
                                  LEFT JOIN plan_n_dim p ON a.plan_key = p.plan_key
                                  WHERE b.cal_date >= CAST(p.createddate AS DATE)
                                    AND b.cal_date <= CAST(a.createddate AS DATE)
                                    AND b.weekday_flag = 'Y');
update a
set days_to_create_interlock = (SELECT COUNT(*)…)
from related_opty_plan_n_dim as a