2017-01-10 74 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] 
相關問題