2012-06-12 2 views
0

У меня есть оператор SELECT, и я хотел бы использовать результат одного из столбцов в другом заявлении SELECT.Динамический выбор столбца

Пример:

SELECT t.day, t.hour, 
    CASE t.event_name IS NULL 
    THEN (SELECT t.day --I would like to select on a day(ie the value of t.day) 
      FROM other_events) 
    ELSE t.event_name 
    END as Event_Name 
FROM event_t t 

other_event представляет собой таблицу, а столбцы дни; поэтому, если у меня нет event в event_t, я буду иметь его в other_event в этот конкретный день.

Конечно, это не сработает, и мне было интересно, возможно ли это в T-SQL.

+0

будет строка существует в любом event_t ИЛИ other_events, но не в обоих? Если это так, то вы используете UNION? – DaveH

+0

да это будет. Я думал об использовании союзов или нескольких заявлений о случаях (если в понедельник тогда, если вторник тогда, ....), но мне было интересно, есть ли что-то более короткое. –

+0

Затем сделайте 'select ..., coalesce (t.event_name, (case when ... when ... else end)' –

ответ

2

Если все дни, которые вы хотите в первой таблице это должно работать:

SELECT t1.day, 
     t1.hour, 
     COALESCE(t1.event, t2.event) AS event 
FROM event_t t1 
     LEFT OUTER JOIN other_events t2 
        ON t1.day = t2.day 
+1

Это то, что я думал, но я не уверен, что это условие для 'JOIN' (OP не понятно). Кроме того, 'COALESCE (t1.event, t2.event) AS event' может заменить' CASE ... ' – bfavaretto

+0

Отмечено и обновлено. Да, трудно сказать наверняка, если все дни включены в первую таблицу или что нужно будет присоединить к – jimdrang

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