【问题标题】:How to assign a Column Heading/name to this query in sql server?如何在 sql server 中为此查询分配列标题/名称?
【发布时间】:2017-01-10 14:54:18
【问题描述】:

这是我的简单查询。

Declare @custName INT 
Set @custName = 2 
Select  case @custName 
when 1 then 'abc' 
when 2 then 'xyz'
when 3 then 'pqr'
end

上述查询运行良好。

输出是

我正在考虑将列或标题名称指定为客户名称。

我尝试对查询进行一些排列。

  • Declare @custName INT Set @custName = 2 Select case @custName as CustomerName when 1 then 'abc' when 2 then 'xyz' when 3 then 'pqr' end
  • Declare @custName INT Set @custName = 2 Select CustomerName as case @custName when 1 then 'abc' when 2 then 'xyz' when 3 then 'pqr' end

但返回错误。

所以我的问题是如何分配一些适当的标题/列名?

【问题讨论】:

    标签: sql sql-server sql-server-2012


    【解决方案1】:

    您可以为结果列分配别名

    Declare @custName INT 
    
    Set @custName = 2 
    
    Select  case @custName 
     when 1 then 'abc' 
     when 2 then 'xyz'
     when 3 then 'pqr'
    end as custname
    

    【讨论】:

    • 哦!错过了这种排列:)。谢谢。
    • 还有一点要与您核实。假设我想当我运行这个查询时,sql server 应该提示我传递@custname 值
    • 你不能。您必须需要将值设置为变量,即 Set @custName = 2 。或者您可以创建一个存储过程。如果您右键单击存储过程并选择“执行存储过程”,SQL Server Management Studio 将提示输入存储过程的参数。否则,不,它不会提示输入参数。
    【解决方案2】:

    SQL Server 中至少有 3 种方法可以做到这一点:

    <expression> as <alias>
    <expression> <alias>
    <alias> = <expression> 
    

    所以对于你的例子,它可以是:

    DECLARE @custName INT  
    SET @custName = 2  
    SELECT  CASE @custName
              WHEN 1 THEN 'abc'
              WHEN 2 THEN 'xyz'
              WHEN 3 THEN 'pqr'
            END AS CustomerName
    

    或:

    DECLARE @custName INT  
    SET @custName = 2  
    SELECT  CASE @custName
              WHEN 1 THEN 'abc'
              WHEN 2 THEN 'xyz'
              WHEN 3 THEN 'pqr'
            END CustomerName
    

    或:

    DECLARE @custName INT  
    SET @custName = 2  
    SELECT  CustomerName = CASE @custName
              WHEN 1 THEN 'abc'
              WHEN 2 THEN 'xyz'
              WHEN 3 THEN 'pqr'
            END 
    

    【讨论】:

    • 谢谢 :) 。此方式由@Abdul 发布,如果您也发布其他两种方式会很棒。
    • 是的。太棒了。(Y) :)
    【解决方案3】:

    您需要使用Alias Name 并使用方括号来转义别名中的空格。在SQL SERVER 2012 中使用Choose 有一种简单的方法来做到这一点

    Declare @custName INT 
    
    Set @custName = 2 
    
    Select  Choose(@custName,'abc', 'xyz', 'pqr') as [Customer Name]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 2017-03-09
      • 2019-01-21
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多