如何在sql server中为此查询分配列标题/名称?
这是我的简单查询。如何在sql server中为此查询分配列标题/名称?
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 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
您可以将别名分配给结果列
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将提示输入存储过程的参数。否则,不,它不会提示参数。 –
您需要使用Alias Name
并用方括号来逃避别名的空间。之间有简单的方法在SQL SERVER 2012
做到这一点使用Choose
Declare @custName INT
Set @custName = 2
Select Choose(@custName,'abc', 'xyz', 'pqr') as [Customer Name]
谢谢:)。这种方式由@Abdul发布,如果你发布其他两种方式,这将是非常好的。 –
Yeah.Great。(Y):) –