【发布时间】:2020-06-22 20:02:58
【问题描述】:
我正在编写一个整合的 SQL 脚本,需要
- 将名为 AdjudicatedDateTime 的日期时间列添加到 WarrantyAdjudicationStaging 表中。
- 为表中的新条目添加默认日期 GETDATE()
- 使用 AdjudicatedDateTime 的 NULL 值更新旧记录
这些语句似乎单独运行良好,但我需要它们一起运行。当我尝试一起运行它们时,我收到以下错误:
消息 207,第 16 层,状态 1,第 27 行
列名“AdjudicatedDateTime”无效
USE NATesterData
ALTER TABLE WarrantyAdjudicationStaging
ADD AdjudicatedDateTime datetime
USE NATesterData
ALTER TABLE WarrantyAdjudicationStaging
ADD CONSTRAINT DF_WarrantyAdjudicationStaging DEFAULT GETDATE() FOR AdjudicatedDateTime
USE NATesterData
UPDATE WarrantyAdjudicationStaging
SET AdjudicatedDateTime = AuditResults.AdjudicatedDateTime
FROM WarrantyAdjudicationStaging was
INNER JOIN
(
SELECT MAX(dateTimeRun) AdjudicatedDateTime, was.WarrantyAdjudicationGroupID
FROM WarrantyAdjudicationStaging was
INNER JOIN (
SELECT DISTINCT WarrantyAdjudicationGroupID
FROM WarrantyAdjudicationStaging
WHERE WarrantyAuditKey IS NULL
) exceptions
ON was.WarrantyAdjudicationGroupID = exceptions.WarrantyAdjudicationGroupID
INNER JOIN WarrantyUsageAudit wua
ON was.WarrantyAuditKey= wua.WarrantyAuditKey
GROUP BY was.WarrantyAdjudicationGroupID
) AuditResults on was.WarrantyAdjudicationGroupID = AuditResults.WarrantyAdjudicationGroupID
WHERE WAS.AdjudicatedDateTime IS NULL
AND WarrantyAuditKey IS NULL
【问题讨论】:
-
那么,有什么问题呢?你的问题是什么?为什么有 3 个
USE语句,当它们定义同一个数据库时? -
当我执行查询时,我得到这个“消息 207,级别 16,状态 1,第 27 行无效的列名 'AdjudicatedDateTime'。”
-
在每个块之间放置一个 GO。删除不必要的 USE 语句。您可以将前两个块组合成一个语句...添加具有默认约束的列。语法很简单。
标签: sql-server tsql sql-scripts