sql - 如何使用输出子句从连接表中捕获列?
问题描述
我正在通过加入 tableB 和 tableC 来更新一个名为 tableA 的表,同时我正在使用 tableA 的输出子句将更新的记录捕获到临时表中。现在我想从表 B 中捕获更新数据的列,但输出子句不允许相同。
例如:
Update SLC Set SLC.Datascrublevel = C.Datascrublevel
OUTPUT [Deleted].Systemcode,
[Deleted].Systemkey,
[Deleted].datascrublevel,
[Inserted].datascrublevel
INTO #TEMP1
FROM TABLEA SLC with(nolock)
INNER JOIN TABLEB SC ON SC.SystemCode = SLC.SystemCode
INNER JOIN TABLEC SL ON SL.SystemCode = SLC.SystemCode and SLC.SystemKey = SL.Systemkey
INNER JOIN #TEMP C ON SLC.Datascrublevel <> C.DataScrubLevel AND C.Systemcode = SLC.SystemCode and C.Systemkey = SLC.SystemKey
现在我希望 tableB 中的列使用输出子句捕获到临时表中。如果有任何替代方法,请提供您的建议。
解决方案
就像你给它一样[deleted].[Column Name]
并[Inserted].[Column Name]
添加一列作为[SC].[Column Name]
例子 :
IF OBJECT_ID('TempDb..#TABLEA') IS NOT NULL
DROP TABLE #TABLEA
IF OBJECT_ID('TempDb..#TABLEB') IS NOT NULL
DROP TABLE #TABLEB
IF OBJECT_ID('TempDb..#TABLEC') IS NOT NULL
DROP TABLE #TABLEC
IF OBJECT_ID('TempDb..#TABLED') IS NOT NULL
DROP TABLE #TABLED
CREATE TABLE #TABLEA
(
SeqNo INT IDENTITY(1,1),
MyDate DATE
)
CREATE TABLE #TABLEB
(
SeqNo INT IDENTITY(1,1),
FullName VARCHAR(20)
)
CREATE TABLE #TABLEC
(
SeqNo INT IDENTITY(1,1),
FullName VARCHAR(20),
MyDate DATE
)
CREATE TABLE #TABLED
(
SeqNo INT,
MyDate DATE,
FullName VARCHAR(20)
)
INSERT INTO #TABLEA
(
MyDate
)
SELECT GETDATE()
UNION
SELECT GETDATE()+1
UNION
SELECT GETDATE()-1
INSERT INTO #TABLEB
(
FullName
)
VALUES('A'),('B'),('C')
INSERT INTO #TABLEC
(
FullName
)
VALUES('A'),('B'),('C')
UPDATE C
SET MyDate = A.MyDate
OUTPUT
deleted.SeqNo,
deleted.MyDate,
B.FullName
INTO #TABLED
FROM #TABLEC C
INNER JOIN #TABLEB B
ON C.FullName = B.FullName
INNER JOIN #TABLEA A
ON A.SeqNo = B.SeqNo
SELECT * FROM #TABLED
推荐阅读
- r - 使用 renderTable 时删除一列
- c++ - 在 wxWidgets 的事件中包含我自己的数据的最佳方式是什么?
- java - Bluetoothlescanner 在屏幕关闭时停止扫描或减少扫描频率
- ruby-on-rails - ruby 版本错误,无法安装 rvm
- phpstorm - PhpStorm:远程主机启动目录
- javascript - uuidv4.js 正则表达式问题 - IE11
- django - 无限滚动列表的过滤在 Django 中不起作用
- blockchain - 无法在 docker 容器内运行 corda 节点,因为 corda 中的 corda-tools-network-builder.jar 未找到
- r - 将数值传递给使用 dplyr 的函数
- ios - 为什么切换应用程序时显示应用程序图标nt