如何使用SQL Query比较列数据和替换文本

时间:2016-04-20 15:40:20

标签: 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为空并对其他列执行相同的操作

1 个答案:

答案 0 :(得分:2)

我无法打扰在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