从表连接条件中的列连接拉出连接

时间:2013-05-13 14:01:51

标签: sql join

我想提取一条SQL语句,以便根据表源有条件地填充一列(第二个表中没有)。

Table1
joinid
flag1
cond1
cond2
date

Table2
joinid
flag2
cond2
date

我希望输出为:

flag1,flag2,cond1,cond2

其中cond1对于table2的结果总是600。

条件是日期必须在特定范围内。

Psuedo Ex:

SELECT flag1,flag2,IF tablesource=table1 then cond1 else 600 AS cond1,cond2 
FROM table1 
WHERE date IN (date1,date2,date3, etc) 
LEFT JOIN table2 on table1.joinid=table2.joinid

2 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,您正在寻找不同行中两个表的结果。这是通过union代替left join

完成的
select  flag1
,       flag2
,       cond1
,       cond2
from    (
        select  flag1
        ,       null as flag2
        ,       cond1
        ,       cond2
        ,       date
        from    Table1
        union all
        select  null
        ,       flag2
        ,       600
        ,       cond2
        ,       date
        from    Table2
        ) SubQueryAlias
where   '2010-01-01' <= date and date < '2011-01-01'

答案 1 :(得分:1)

是否需要将两个cond2字段放入一个目标字段?
需要将哪个日期字段用于过滤器?

假设没有和table1 ......

选择
t1.joinid,
t1.flag1,
t2.flag2,
如果t1.cond1不为null,则cond1 else 600结束AS cond1
t1.cond2为t1cond2,
t2.cond2为t2cond2
FROM table1 t1
在t1.joinid = t2.joinid的LEFT JOIN table2 t2 在哪里t1.date IN(date1,date2,date3等)