使用SQL Server 2012,我有以下数据:
Reference Value
---------------------
1 val
1 val
1 val
2 val
2 val
3 val
3 val
我需要根据唯一引用的数量将值附加到Value。只有在列表中有不同的引用,即多个唯一的引用时,才能执行此操作:
Reference Value
---------------------
REF123 val 1
REF123 val 1
REF123 val 1
REF789 val 2
REF789 val 2
REF999 val 3
REF999 val 3
答案 0 :(得分:0)
使用相关的子查询来计算(不同的)此行和更早的参考值。
select reference, value + ' ' + cast((select count(distinct t2.Reference)
from tablename t2
where t2.Reference <= t1.Reference) as varchar(11))
from tablename t1
思考+
是SQL Server concat(ANSI SQL ||
),而CAST
可能是CONVERT
...
答案 1 :(得分:0)
您可以尝试以下操作:
SELECT Reference, Value + CASE WHEN (SELECT COUNT(DISTINCT Reference) FROM @t ) > 1
THEN CAST(DENSE_RANK() OVER(ORDER BY Reference) AS VARCHAR(20))
ELSE ''
END
FROM TableName