我有一个简单的选择,返回类似的东西 (例如SELECT ColumnA,ColumnB,ColumnC FROM sourcetabel )
Column A - Column B - Column C
John - Something - 123
John - Something - 456
Mark - Something - 123
Mark - Something - 456
现在我想在这里有一个计数器来执行以下操作: 每次在A列中找到事件时,它都会向B列添加一个数字 这就意味着:
Column A - Column B - Column C
John - Something **1** - 123
John - Something **2** - 456
Mark - Something **1** - 123
Mark - Something **2** - 456
有人知道我怎么能这么做吗?
仅供参考:我正在使用MSSQL
谢谢!
答案 0 :(得分:1)
您可以使用concat()
和ANSI标准row_number()
功能:
select a,
concat(a, ' **', row_number() over (partition by a, b order by b), '**') as new_b,
c
from t;
concat()
的确切功能因数据库而异。
答案 1 :(得分:0)
如果您的数据库支持它,请使用row_number函数:
SELECT A, B, C, ROW_NUMBER() OVER(PARTITION BY A,B,C ORDER BY (SELECT NULL))
FROM TableName
(行的顺序是任意的,因为它们无论如何都是相同的)
答案 2 :(得分:0)
对于MSSQL,
选择A,B +强制转换((ROW_NUMBER()OVER(PARTITION BY FirstName ORDER BY (SELECT NULL)))作为varchar(10))作为B,C来自sourcetabel