Sql server 如何在SQL Server中交换行

Sql server 如何在SQL Server中交换行,sql-server,Sql Server,我在SQL Server中有以下行: 如何交换红色圆圈中的数据?将原始值放入临时表中,并交换ID,然后在更新表时加入临时表,示例代码如下: --drop temp table if exists IF OBJECT_ID('tempdb..#Temp', 'U') IS NOT NULL DROP TABLE #Temp --need to store the original values SELECT *,CASE WHEN Room_Number=9104 then 9

我在SQL Server中有以下行:


如何交换红色圆圈中的数据?

将原始值放入临时表中,并交换ID,然后在更新表时加入临时表,示例代码如下:

--drop temp table if exists
IF OBJECT_ID('tempdb..#Temp', 'U') IS NOT NULL
    DROP TABLE #Temp

--need to store the original values
SELECT
    *,CASE WHEN Room_Number=9104 then 9103 ELSE 9104 END AS New_Room_Number
    INTO #Temp
    FROM YourTable
    WHERE Room_Number in (9103,9104)

--swap values
UPDATE y
    SET Check_IN=t.Check_IN
        ,Check_OUT=t.Check_OUT
        ,FullName=t.FullName
        ,ContactNumber=t.ContactNumber
        ,Amount=t.Amount
    FROM YourTable        y
        INNER JOIN #Temp  t ON y.Room_Number =t.New_Room_Number
    WHERE y.Room_Number in (9103,9104)

请考虑阅读可能的重复感谢编辑Joel CoehoornIt @仍然是坏的。示例数据、结果、代码等的屏幕截图不正确。此外,请显示您已经尝试过的内容以及获得的结果。您需要以不同的方式为新列添加别名。生成的临时表将有两列收到的房间号,Msg 207,级别16,状态1,第5行无效列名“ID”。
ID
可能是
房间号
,@NayjArugay。图像不好的原因之一;如果将您的数据以格式化的
文本发布,我们不必转录数据。我将其更改为房间号,但我仍然收到底线错误。Msg 207,16级,状态1,第16行无效列名“New_Room_Number”。@Larnu,这只是我无法复制和粘贴,我已编辑了我的答案