【问题标题】:Update columns In a Teradata Table using data from another table使用另一个表中的数据更新 Teradata 表中的列
【发布时间】:2015-04-24 18:51:38
【问题描述】:

我看过很多帖子,并按照语法编写了以下查询。但是还是报错“Column/Parameter wm_ad_hoc.temp.temp does not exist

请协助找出我在这里做错了什么。

UPDATE temp 
FROM   wm_ad_hoc.OWNED_ITEM_STORE_DLY temp, 
       wm_ad_hoc.OWNED_ITEM_STORE_DLY_UTIL util 
SET    temp.VENDOR_STOCK_ID = util. VENDOR_STOCK_ID, 
       temp.ON_HAND_EACH_QTY = util. ON_HAND_EACH_QTY, 
       temp.VENDOR_STOCK_ID = util.VENDOR_STOCK_ID 
WHERE  temp. VENDOR_NBR = util. VENDOR_NBR 
AND    temp.WMI_ITEM_NBR = util.WMI_ITEM_NBR 
AND    temp. store_nbr = util. store_nbr 
AND    temp.BUSINESS_DATE = util.BUSINESS_DATE

【问题讨论】:

  • 你确定关于错误吗?这里的双重临时工“m_ad_hoc.temp.temp”看起来很混乱
  • 一方面,您的表名和列名之间有空格。 WHERE temp. VENDOR_NBR = util. VENDOR_NBR 应该是 WHERE temp.VENDOR_NBR = util.VENDOR_NBR
  • @JNevill 空格不会改变任何东西,sql 只是忽略它们
  • 但是它们真的很丑,这是对普通礼仪的侮辱。老实说,我不知道它不在乎。我刚试了一下,我的数据库没问题。我觉得我需要清除 DBQL 和我客户的历史记录。哎呀。

标签: sql teradata


【解决方案1】:

您无需限定SET 列。所以:

UPDATE temp 
FROM   wm_ad_hoc.OWNED_ITEM_STORE_DLY temp, 
       wm_ad_hoc.OWNED_ITEM_STORE_DLY_UTIL util 
SET    VENDOR_STOCK_ID = util.VENDOR_STOCK_ID, 
       ON_HAND_EACH_QTY = util.ON_HAND_EACH_QTY, 
       VENDOR_STOCK_ID = util.VENDOR_STOCK_ID
...

【讨论】:

  • 必须从 SET 部分删除限定符,但必须保留它们用于 WHERE 子句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多