使用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
您可以尝试以下操作:
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
使用相关子查询计数(不同的)参考值,本行和更早。
select reference, value + ' ' + cast((select count(distinct t2.Reference)
from tablename t2
where t2.Reference <= t1.Reference) as varchar(11))
from tablename t1
A认为+
是SQL Server concat (ANSI SQL ||
), CAST
可能是CONVERT
…