如何遍历表并将单元格设置为等于sql中的递增值

时间:2015-07-08 13:15:03

标签: sql sql-server loops parameters auto-increment

我有一个User表,如果输入的companyID等于companyID,则显示User的名称,所有其他名称显示为XXXXX。我需要一种方法将它设置为“名称”(字面意思是单词名称),然后是一个递增的数字,表示有多少。

    select  
    case when t1.CompanyID = @id then t1.name else 
    (
    'XXXXX'
    )
    end as Name

输入148显示

enter image description here

我想展示这个,等等更多的名字(name3,name4等):

enter image description here

2 个答案:

答案 0 :(得分:0)

foo作为您的表格的名称,然后这可行(请参阅on Implementing a Shell):

SET @id = 142;
SET @i = 0;
select  
    companyID,
    CASE WHEN foo.CompanyID = @id 
        THEN foo.name 
        ELSE (Concat('Name',@i := @i+1))
    END as Name
FROM foo;

答案 1 :(得分:0)

请试试。

select [CompanyID], 
case when([CompanyID]=@Id) then  'Name' + 
convert(nvarchar,ROW_NUMBER() OVER(ORDER BY Name DESC))  else Name end as Name
from [dbo].[Table_1]
order by [CompanyID]