我有一个包含a,b和c列的表。
以下是我的情景:
对于表格中的每一行,我需要找到a="RECLASSEMENT CDS"
。从结果中,我将获得列c并找到表的所有相同值c=c
和附加条件b="GAP CDS"
。为此,我将获得专栏b
。我知道这很令人困惑所以我在下面添加了一个示例。
这是我的问题:
CREATE TABLE #TEMP_A
(A varchar(20) null,
B varchar(20) null,
C varchar(20) null)
INSERT #TEMP_A
VALUES
('RECLASSEMENT CDS', 'OLD TYPE', '123'),
('GAP CDS', 'NEW TYPE', '123'),
('RECLASSEMENT CDS', 'DUMMY', '456')
UPDATE #TEMP_A SET A =
(
SELECT TOP 1 T3.A
FROM #TEMP_A T1
OUTER APPLY
(
SELECT C, A
FROM #TEMP_A T2
WHERE T2.C = T1.C
AND T2.B = 'GAP CDS'
) T3
WHERE
T1.B = 'RECLASSEMENT CDS'
AND T1.C = T3.C
) WHERE B = 'RECLASSEMENT CDS'
在上面的数据中,第一行的第二列应该被第二行的第二列替换。但是通过上面的更新声明,甚至第三行也被替换了。我有什么想法可以实现这个逻辑吗?