sql - 如何使用 SQL 查询比较列数据并替换文本

标签 sql sql-server sql-server-2008

这是我的表架构

Table1
 {
    Column1 nVarchar(MAX),
    Column2 nVarchar(MAX),
    Column3 nVarchar(MAX),
    Column4 nVarchar(MAX),
    Column5 nVarchar(MAX),
    Column6 nVarchar(MAX),
    Column7 nVarchar(MAX),
    Column8 nVarchar(MAX),
    Column9 nVarchar(MAX),

 }

我该如何比较 Column1 与 Column2 、 Column3 ... Column9 ,如果 Column2 数据与 Column1 相同,则使 Column2 为空并对其他列执行相同操作

最佳答案

我懒得在 iPad 上输入所有 9 列,但下面的内容可以满足您的需要。

您需要按照前两列的模式将其他 7 列添加到 setvaluespivot 中。

UPDATE t1
 SET Column1 = [1],
     Column2 = [2]
FROM #table1 t1
CROSS APPLY
(
SELECT *
FROM
(
SELECT  DENSE_Rank() OVER (ORDER BY MIN(Idx)) AS Rnk, 
        ColumnValue
FROM
(
VALUES(1, Column1),(2, Column2)) V(Idx, ColumnValue)
WHERE ColumnValue IS NOT NULL
GROUP BY ColumnValue
) D
PIVOT (MAX(ColumnValue) FOR Rnk IN ([1], [2])) AS P
) ca

关于sql - 如何使用 SQL 查询比较列数据并替换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36748797/

相关文章:

sql - 如何优化SQL查询以达到最短执行时间

mysql - 元素重复至少 3 次

sql - 如何使用 ODBC 函数将日期时间转换为日期?

java - 如何在 Spring 中设置 SNAPSHOT 隔离级别

SQL 连接到相关子查询,其中表通过重叠范围相关

mysql - 在第一次选择的基础上进行第二次选择

mysql - 删除级联更新级联的外键约束

sql-server - 如果两个事务都没有回滚,则已提交读与未提交读

sql-server-2008 - SQL从游标中获取记录

sql-server - 如何在另一个程序中获取一个程序的RaiseError消息