2014-01-06 7 views
0

Я пытаюсь вернуть либо просто «1», либо «0», а не как то, что происходит в заявлении Case. Мое текущее заявление выглядит следующим образом. Если бы существовало ANY O под именем, тогда мне нужно это показать вместо «1». Если нет «0», мне бы хотелось показать «1». Спасибо за любую помощь.Заявление о конкретном случае

SELECT Distinct Room, 
     Unit, 
     Number, 
     (LastN +', '+ FirstN) AS Name, 

    min(CASE WHEN Ques1_Yes = '0' THEN '0' 
      WHEN Ques2_Yes = '0' THEN '0' 
      WHEN Ques3_Yes = '0' THEN '0' 
      WHEN Ques4_Yes = '0' THEN '0' 
      WHEN Ques6_Yes = '1' THEN '0' 
      WHEN Name IS NULL THEN '-1' 
     ELSE '1' 
    END AS Direction 

FROM Customer_Service.dbo.Name 
WHERE Name = 'smiff, jess' 

Теперь мне интересно, как заставить это работать. Извините, я новичок в sql

+0

Что возвращает этот запрос? Сколько записей в этой таблице с этим именем? –

+0

1. См. Нормализацию. – Strawberry

+0

@Bracuk - он вернет «1» и «0» в один столбец в две строки, если у человека было 1 или более «0 и 1». Для имени может быть до 9 строк с несколькими столбцами «Ques1_Yes to Ques6_Yes», ​​содержащие либо «1», либо «0». – user3119778

ответ

0

Может быть, так?

SELECT 
    min(CASE WHEN Ques1_Yes = '0' THEN '0' 
       WHEN Ques2_Yes = '0' THEN '0' 
       WHEN Ques3_Yes = '0' THEN '0' 
       WHEN Ques4_Yes = '0' THEN '0' 
       WHEN Ques6_Yes = '1' THEN '0' 
       WHEN Name IS NULL THEN 'NULL' 
    ELSE '1' 
      END) AS Direction 

FROM Customer_Service.dbo.Name 
WHERE Name = 'smiff, jess' 
+0

Ничего себе! На самом деле это выглядит так, как будто это сработает для меня. Спасибо! – user3119778

+0

На самом деле это не будет работать как Null can not compute through the Min. Мне нужно «1, 0 или Null», чтобы показать. :/ – user3119778

+0

Почему вы не используете -1 вместо NULL? Или 0.5 в зависимости от вашей системы ... –

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