2017-01-10 58 views
2

这是我的简单查询。如何在sql server中为此查询分配列标题/名称?

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

以上查询运行良好。

输出是

SQL Statement

我想指定的列或标题名称作为客户名称。

我试着查询的一些排列组合。

  • 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

但返回错误。

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

回答

1

至少有三种方式SQL Server做到这一点:

<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 
+0

谢谢:)。这种方式由@Abdul发布,如果你发布其他两种方式,这将是非常好的。 –

+0

Yeah.Great。(Y):) –

2

您可以将别名分配给结果列

Declare @custName INT 

Set @custName = 2 

Select case @custName 
when 1 then 'abc' 
when 2 then 'xyz' 
when 3 then 'pqr' 
end as custname 
+1

哦!这个排列错过了:)。谢谢。 –

+0

还有一点要与你核对。假设我想在运行这个查询时,sql server应该提示我传递@custname的值 –

+0

你不能。您必须将值设置为变量,即Set @custName = 2。或者你可以创建一个存储过程。如果您右键单击“存储过程”并选择“执行存储过程”,SQL Server Management Studio将提示输入存储过程的参数。否则,不,它不会提示参数。 –

0

您需要使用Alias Name并用方括号来逃避别名的空间。之间有简单的方法在SQL SERVER 2012做到这一点使用Choose

Declare @custName INT 

Set @custName = 2 

Select Choose(@custName,'abc', 'xyz', 'pqr') as [Customer Name] 
相关问题