首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用output子句从连接表中捕获列?

如何使用output子句从连接表中捕获列?
EN

Stack Overflow用户
提问于 2018-09-20 17:43:01
回答 1查看 283关注 0票数 1

我正在通过连接tableB和tableC来更新一个名为tableA的表,同时我使用tableA的output子句将更新的记录捕获到临时表中。现在,我希望从表B中捕获列来获取更新后的数据,但是output子句不允许这样做。

例如:

代码语言:javascript
复制
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

现在,我希望使用output子句将tableB中的列捕获到临时表中。如果有任何替代方法,请提供您的建议。

EN

回答 1

Stack Overflow用户

发布于 2018-09-20 17:54:42

就像您将其指定为[deleted].[Column Name][Inserted].[Column Name]一样,再添加一列作为[SC].[Column Name]

示例:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52422101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档