假设我有以下内容:
COL1 COL2 COL3
ABC DATA1
ABC DATA1
ABC DATA2
ABC DATA3
DEF INFO1
DEF INFO2
DEF INFO3
DEF INFO3
我想使用SQL将组中最常出现的值传播到该组的COL3中。所以,我的结果将是:
COL1 COL2 COL3
ABC DATA1 DATA1
ABC DATA1 DATA1
ABC DATA2 DATA1
ABC DATA3 DATA1
DEF INFO1 INFO3
DEF INFO2 INFO3
DEF INFO3 INFO3
DEF INFO3 INFO3
有什么想法吗? SQL Server 2012。
答案 0 :(得分:0)
;With cte
as
(
col1,col2,row_number() over (partition by col1,col2 order by col1) as rownum
)
select col1,col2,b.col2 as col3
from yourtable t
cross apply
( select top1 col2 from cte c where c.col1=t.col1 order by rownum desc) b
答案 1 :(得分:0)
我会这样写:
UPDATE P SET P.Col3=T.Col2
FROM Propagation P
JOIN(
SELECT TOP 1 WITH TIES Col1, Col2
FROM Propagation
GROUP BY Col1, Col2
ORDER BY COUNT(*) DESC
) T ON T.Col1=P.Col1