2013-08-08 4 views
1

Я пишу оператор case, где мне нужно проверить столбцы и присвоить значение. Но что, если строка подходит для нескольких случаев? Например, в следующей таблице я хочу назначить ведро, когда COLA и/или COLB имеют значение NULL; поэтому в первом случае обе имеют значение NULL, поэтому как я могу сказать, что оператор case SQL присваивает «Both are NULL», когда COLA и COLB равны нулю. Я могу легко назначить, когда COLA или COLB имеют значение NULL. В моей работе я проверяю 8 столбцов, поэтому мне нужно найти все комбинации и правильный случай для этого? Должен быть простой способ. БлагодаряSQL case statment - Несколько условий

**RowNumber  COLA     COLB    Case** 
1     Null     Null    **Both are NULL** 
2     Null     B      A is null 
3     A     Null     B is null 
4     AA    BB     NULL 
5     CC    Null     B is null 
+1

Чтобы решить эту проблему, вы должны использовать mySQL 'IF(). – DevlshOne

+2

Это вопрос MySQL или вопрос SQL Server? Выберите его. –

+0

Как вы потребляете этот выход? Что вы будете делать, если «оба равны нулю»? –

ответ

7

Учитывая у вас есть 8 столбцов, вы, вероятно, нужно сделать что-то вроде этого:

WITH t AS (
    SELECT 
     CASE WHEN (colA IS NULL AND colB IS NULL AND colC IS NULL AND colD IS NULL AND 
        colE IS NULL AND colF IS NULL AND colG IS NULL AND colH IS NULL) THEN 'ALL' ELSE '' END [ALL], 
     CASE WHEN colA IS NULL THEN 'A' ELSE '' END [A], 
     CASE WHEN colB IS NULL THEN 'B' ELSE '' END [B], 
     CASE WHEN colC IS NULL THEN 'C' ELSE '' END [C], 
     CASE WHEN colD IS NULL THEN 'D' ELSE '' END [D], 
     CASE WHEN colE IS NULL THEN 'E' ELSE '' END [E], 
     CASE WHEN colF IS NULL THEN 'F' ELSE '' END [F], 
     CASE WHEN colG IS NULL THEN 'G' ELSE '' END [G], 
     CASE WHEN colH IS NULL THEN 'H' ELSE '' END [H] 
     FROM 
      <TABLENAME>)         

SELECT 
    CASE WHEN [ALL] = 'ALL' THEN 'ALL are NULL' 
    ELSE [ALL] + ',' + A + ',' + B + ',' + C + ',' + D + ',' 
       + E + ',' + F + ',' + G + ',' + H + ' are NULL' 
END 
FROM T 

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

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