【问题标题】:Increment an alias in dynamic sql select statement在动态 sql select 语句中增加别名
【发布时间】:2013-07-28 17:04:46
【问题描述】:

我正在尝试创建一个动态 SQL 语句,其中包含一个必须递增的别名。我的查询是这样的

DECLARE @q varchar(255)
SET @q = '0'
SELECT 'SELECT (SELECT DISTINCT NameColumn 
FROM NAMETABLE) @q' 
FROM NameTable

nametable @q 中每条记录的更改位置。因此,对于记录 1,@q = 0,对于记录 2,@q = 1,对于记录 3,@q = 2,等等。我发现 ROW_NUMBER 但这似乎只增加一列并作为 Int 而我需要一个varchar 递增。如果有人知道如何做到这一点,或者可以为我指明正确的方向,那就太好了

【问题讨论】:

  • 您想要增加的 varchar 的典型值是多少?
  • 随便,我只需要唯一的别名

标签: sql sql-server-2005 testing dynamic-sql


【解决方案1】:

这是你想要的吗?

SELECT 'SELECT (SELECT DISTINCT NameColumn 
                FROM NAMETABLE
              ) ' + cast(row_number() over (order by (select NULL)) as varchar(255))
FROM NameTable;

但是,我不清楚您为什么希望别名是数字。

编辑:

要得到你想要的,只需在数字前加上一个字母。

SELECT 'SELECT (SELECT DISTINCT NameColumn 
                FROM NAMETABLE
              ) t' + cast(row_number() over (order by (select NULL)) as varchar(255))
FROM NameTable;

【讨论】:

  • 我肯定用错了,别名应该是 varchar,所以它可以是任何类型的递增 varchar 值,例如 a、b、c、d。我的动态 sql 将创建一个 select 语句列表,这些语句将与 1 到 70 条语句联合在一起,所以我需要别名是唯一的
  • 效果很好,感谢您的帮助和增进我的知识
猜你喜欢
  • 1970-01-01
  • 2021-01-28
  • 2016-09-10
  • 1970-01-01
  • 2022-11-01
  • 2017-09-26
  • 2013-02-17
  • 2013-06-30
  • 2012-10-14
相关资源
最近更新 更多