2013-02-25 22 views
0
SELECT TOP 10 
     VendorId, 
     CASE WHEN VendorNumber IS NULL THEN VendorId 
     END AS 'VendorNumber' 
FROM Table 

上述不起作用。如果原始列爲NULL,如何將SELECT值設置爲不同的列?

基本上我想這樣做:

我要選擇2列:VENDORID和VendorNumber。

如果VendorNumber爲NULL,我想顯示VendorId。

如何用上述查詢來完成此操作?查詢基本上顯示NULL而不是VendorID。

+0

爲什麼要顯示vendorid列兩次? – DevelopmentIsMyPassion 2013-02-25 20:13:40

+2

在你的代碼中你需要** ELSE **。 – 2013-02-25 20:14:26

回答

5

必須指定ELSE,或者你會得到空當VendorNumber空:

SELECT TOP 10 
     VendorId, 
     CASE WHEN VendorNumber IS NULL THEN VendorId ELSE VendorNumber 
     END AS 'VendorNumber' 
FROM Table 

可以簡化使用isnullcoalesce

select top 10 VendorId, isnull(VendorNumber, VendorId) as VendorNumber 
from Table 
+1

+1 - 儘管如此,它可以更清潔,同意COALESCE' – LittleBobbyTables 2013-02-25 20:16:22

+0

,補充說。 – Blorgbeard 2013-02-25 20:19:04

+0

謝謝!我明白了現在的問題。 – 2013-02-25 20:27:14

2

你缺少的ELSE因此它將null放置在VendorNumber不爲空的所有行中:

SELECT TOP 10 VendorId, 
    CASE 
     WHEN VendorNumber IS NULL 
     THEN VendorId 
     ELSE VendorNumber 
    END AS 'VendorNumber' 
FROM Table 

這也可以寫成:

SELECT TOP 10 VendorId, 
    Coalesce(VendorNumber, VendorId) AS 'VendorNumber' 
FROM Table 
0

嘗試 從表中選擇前10 廠商ID, COALESCE(VendorNumber,VENDORID)作爲vendornumber

0

試試這個

select top 10, vendorid, coalesce(VendorNumber,VendorID) VendorNumber 
from yourtable 
0

SQL函數做,這是coalesce()

SELECT TOP 10 VendorId, coalesce(VendorNumber, VendorId) as VendorNumber 
FROM Table 

這假定廠商ID和VendorNumber是同一類型。否則,您可能需要添加一些轉化。例如,如果VendorId是字符串和VendorNumber的一個數字:

select top 10, VendorId, coalesce(cast(VendorNumber as varchar(255)), VendorId) 
from Table 
0

「Else」缺失。

SELECT TOP 10 VendorId, 
     CASE 
      WHEN VendorNumber IS NULL 
      THEN VendorId 
      ELSE VendorNumber 
     END AS 'VendorNumber' 
    FROM Table 
相關問題