SQL动态地向记录追加数字



使用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

最新更新