2015-03-24 2 views
-1

SQL начальных знанийКак вставить Выбрать statments в пункте Дела в SQL

У меня есть в таблице ниже: ScoreTable

Name Score Reason Subject 
a1  0  NULL  NULL 
a2  -1 NULL  NULL 
a3  -3 fail  Maths 
a4  -3 fail  History 
a3  0 NULL  NULL 

Я хочу написать запрос, который будет выглядеть некоторые вещи, как показано ниже

Select DISTINCT Name, Result, 
    (If Result = -3 
     then Concat(Reason,' ',Subject))As FailedIn) 

От ScoreTable

Ожидаемый результат:

Name Score FailedIn 
a1  0  0 
a2  -1 0 
a3  -3 fail Maths 
a4  -3 fail History 

ответ

0

Возможно, вы не захотите поставить «0» и строку в том же столбце. Лучше использовать NULL. Итак:

Select Name, Result, 
     (case when Result = -3 then Reason + ' ' + Subject 
     end) as FailedIn 

Неясно, почему последняя строка исчезает, но, возможно, вы хотите что-то вроде:

Select Name, min(Result), 
     (case when min(Result) = -3 then max(Reason + ' ' + Subject) 
     end) as FailedIn 
from table t 
group by name 
0

Попробуйте использовать CASE..WHEN..THEN, как показано ниже, и использовать минимальный результат балл:

SELECT Name, MIN(Result) 
    CASE WHEN Result = -3 
     THEN Reason +' '+Subject 
     ELSE Result 
    END As FailedIn 
FROM mytable 
GROUP BY Name, Result 
0

Тест

Выбрать Название, оценка, случай, когда СЧЕТ = -3 THEN CONCAT (ПРИЧИНА, '', SUBJECT) ELSE '0' END as FAILEDIN FROM ScoreTable

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