【问题标题】:SQL Variable Column Name depends on Row dataSQL 变量列名取决于行数据
【发布时间】:2011-03-08 10:39:13
【问题描述】:

我正在尝试从 DB 中获取一个列,该列返回取决于行数据的变量列名。我知道我可以使用动态 SQL 获得可变列名,但如果名称实际上取决于行的信息怎么办。

SELECT name,age FROM dbo.Names                           

--将 'name' 重新作为列名

SELECT name as [xyz],age FROM dbo.Names                 

--返回 'xyz' 作为列名

EXEC 'SELECT name as [' +  @var + '], age FROM dbo.Names'

--将@var 值作为列名返回

SELECT name AS ['Hi: ' + age ] FROM dbo.Name ?????       

--所以我试图将 'Hi: 25' 或 'Hi: 40' 作为列名

我该怎么做?有什么帮助吗?

【问题讨论】:

  • 您应该提供数据示例和预期的列名
  • 一方面我怀疑这是否是一个好主意,大概只有一个值,因为列不能有不同的名称,具体取决于行,所以你不能检索它并且使用你的方法三?

标签: sql-server-2005 dynamic-sql


【解决方案1】:

您可以将这些方法组合为一行,但不能用于选择所有行:

DECLARE @age INT
SET @age = SELECT TOP 1 @age FROM dbo.NAMES
EXEC 'SELECT name as [Hi ' +  @age + '], age FROM dbo.Names'

为什么需要在 SQL 中而不是在应用程序逻辑中执行此操作?

【讨论】:

  • +!暗示这是错误的逻辑。这可能只是前端的格式问题。
【解决方案2】:

我将不得不在应用程序端进行更改。我认为这在 SQL 端是不可能改变的。该逻辑仅适用于 1 行,我需要多行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-07
    • 2016-11-12
    • 2015-03-20
    • 2015-06-06
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多