【问题标题】:how to loop through table and set cell equal to an incremented value in sql如何遍历表并设置单元格等于sql中的增量值
【发布时间】:2015-07-08 13:15:02
【问题描述】:

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

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

输入 148 显示

我想显示这个,以此类推以获得更多名称(name3、name4 等):

【问题讨论】:

  • 您的图片丢失.. 更新它
  • 现在好点了吗?他们在两台不同的计算机上为我显示
  • 典型输出的总用户数。 200左右
  • 返回多少行
  • idk 目前约为 70,但如果您可以扩展 @pholochitairze 答案,那就太好了

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


【解决方案1】:

foo 是您的表的名称,那么这可以工作(请参阅sqlfiddle):

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;

【讨论】:

  • 这应该可以,但它给了我一个不正确的语法:也许是因为我正在使用 sqlserver?
  • 如果您使用的是sql server,为什么要标记mysql? ^^ 我认为问题在于没有声明变量。我会尽快编辑。
  • 我声明我要检查它,你的权利我很抱歉我一定是做错了。
【解决方案2】:

请试试这个。

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]

【讨论】:

  • 为什么你在 name = xxxx 时放了?它永远不会相等。而你忽略了我正在输入需要与名称匹配的公司 ID 的事实
  • 但我可以使用行号,所以谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
相关资源
最近更新 更多