2013-03-07 3 views
-1
структуры

Таблица:"Subquery вернулся более чем 1 значение" ошибка с СЛУЧАЙ

Customer 
    ID int not null, 
    Name varchar(100) null 

запроса:

SELECT ID, 
    (SELECT CASE WHEN (Name IS NULL AND Name <> '') 
      THEN CAST(1 AS BIT) 
      ELSE CAST(0 AS BIT) END 
    FROM Customer) AS IsNameNullOrWhitespace 

Это дает мне 'Subquery вернулся более чем на 1 значение это ..'. Почему это?

+2

... потому что подзапрос возвратил более 1 значения. – Kermit

+1

Сообщение очень наводящее на размышления. Ваш второй 'SELECT' возвращает более 1 значения – niculare

+1

Если вы имеете в виду« Почему> 1 строка возвращена? », Это зависит от ваших данных, которые вы отказались от участия. Если вы имеете в виду «Почему> 1 строка не разрешена?», Это связано с тем, что подзапрос, который возвращает> 1 строку, является ссылкой, которая должна быть присоединена к остальной части запроса; он не может использоваться как скалярное значение. –

ответ

2

Оказывается, что вам не нужен subquery- вы можете вставлять в case верхнего уровня select, как это:

SELECT id, 
     CASE 
     WHEN (name IS NULL 
       AND name <> '') THEN Cast(1 AS BIT) 
     ELSE Cast(0 AS BIT) 
     END AS IsNameNullOrWhitespace 
FROM customer 
+0

Не могу поверить, что я пропустил это. – user1151923

1
SELECT ID, 
Case When IsNull(Name,'') ='' Then CAST(1 AS BIT) Else CAST(0 AS BIT) End 
IsNameNullOrWhitespace 
FROM Customer 

Вам нужно выше запроса.

Смежные вопросы