2016-08-09 4 views
-5

У меня есть 2 вопроса.Пример утверждения для нескольких столбцов

(1) У меня есть столбцы colA, colB, ColC, colD. Мне нужно изменить значения в colC. на основе следующих условий

Если colB = 1, то colC = 'Tom1' еще, если первые 3 символа Холода = 'Джеф', то colC = 'TOM2' Else Null.

(2) Как добавить значение по умолчанию '12: 00 pm 'в целочисленный столбец?

Пожалуйста, помогите мне, мне здесь нужно.

Заранее спасибо

+0

Является ли этот mysql или SQL Server? Вы отметили оба. –

+0

'CASE WHEN colB = 1 AND colC = 'Tom1' THEN '' КОГДА LEFT (colID, 3) = 'Jef' AND colC = 'Tom2' THEN '' ELSE NULL END' – Lamak

+0

Это сервер Sql – John

ответ

0

Это не кажется, что нужная логика завершена. Например, что вы действительно хотите, чтобы значение сохраняло текущее значение КОС? и вы пишете colb = 1, тогда colC = 'Tom1' ... Предполагаю, что тогда предполагается и.

CASE 
    WHEN colB = 1 and colC = 'Tom1' THEN ???? 
    WHEN LEFT(colD) = 'Jef' AND colC = 'Tom2' THEN ???? 
    ELSE NULL 
END 

Если вы просто хотите сохранить колу значение, то вы можете комбинировать Yoru заявления регистра с ИЛИ

CASE 
    WHEN (colB = 1 and colC = 'Tom1') 
     OR (LEFT(colD) = 'Jef' AND colC = 'Tom2') THEN colA 
    ELSE NULL 
END 
+0

Я обновил вопрос сейчас. Пожалуйста, проверьте его – John

+0

вопрос выглядит одинаково – Matt

+0

Как добавить значение по умолчанию '12: 00 pm 'в целочисленный столбец? – John

0

Предполагая, что вы в полной мере имеют значения colB и COLD в то время вы производите colC, вы могли бы использовать что-то вроде:

select 
    colA 
    ,colB 
    ,case 
     when colB = 1 then 'Tom1' 
     when left(colD,3) = 'Jef' then 'Tom2' 
     else null 
    end as colC 
    ,colD 

Если colB и COLD также рассчитываются столбцы и вы не хотите повторить расчеты, вы могли бы сделать те, в подзапрос и рассчиты ваются поздний colC во внешнем запросе.

select 
    t1.colA 
    ,t1.colB 
    ,case 
     when t1.colB = 1 then 'Tom1' 
     when left(t1.colD,3) = 'Jef' then 'Tom2' 
     else null 
    end as colC 
    ,t1.colD 
from 
(
    select 
     colA 
     ,case when someCondition then 1 else 2 end as colB 
     ,(select top 1 name from someTable) as colD 
    from 
     ... -- whatever your source tables are 
) t1 
Смежные вопросы