2012-06-12 113 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_t中没有event,那么我将在该特定日期的other_event中。

当然这不会工作,我想知道如果它甚至可能在T-SQL中。

+0

将排在任event_t OR other_events存在,但从来没有在这两个?如果是这样的话,你有没有使用联盟? – DaveH

+0

是的,它会。我想过使用工会或多个案例陈述(如果星期一,如果星期二,那么......),但我想知道是否有更短的东西。 –

+0

然后做一个'select ...,coalesce(t.event_name,(when 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事件'可以替代'CASE ...' – bfavaretto

+0

已注明和更新。是的,很难确定是否所有的日子都包含在第一个表格中,或者需要加入哪些日期 – jimdrang