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

Вышеуказанное не работает.Как установить значение SELECT равным другому столбцу, если исходный столбец равен NULL?

В основном я хочу, чтобы это сделать:

Я хочу, чтобы выбрать 2 колонки: VendorID и VendorNumber.

Если VendorNumber IS NULL, я хочу отобразить VendorId.

Как я могу выполнить это с помощью запроса выше? Запрос в основном показывает NULL вместо VendorID.

+0

Почему вы хотите дважды отображать столбец vendorid? – DevelopmentIsMyPassion

+2

В вашем коде вам нужно ** ELSE **. –

ответ

5

Вы должны указать ELSE, или вы получите нулевой, когда VendorNumber является не нуль:

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

можно упростить с помощью isnull или coalesce:

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

+1 - Правда, хотя это может быть более чистым с 'COALESCE' – LittleBobbyTables

+0

Согласен, добавил, что. – Blorgbeard

+0

спасибо! я вижу, в чем проблема. –

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 VendorID, 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 

Это предполагает, что VendorID и 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 
Смежные вопросы