Sql 从表源上具有列条件的联接中提取

Sql 从表源上具有列条件的联接中提取,sql,join,Sql,Join,我想提取一条SQL语句,以便根据表源有条件地填充第二个表中不存在的一列 Table1 joinid flag1 cond1 cond2 date Table2 joinid flag2 cond2 date 我希望输出为: flag1,flag2,cond1,cond2 其中,对于表2中的结果,cond1始终为600 有一个条件,即日期必须在特定范围内 Psuedo Ex: SELECT flag1,flag2,IF tablesource=table1 then cond1 else 6

我想提取一条SQL语句,以便根据表源有条件地填充第二个表中不存在的一列

Table1
joinid
flag1
cond1
cond2
date

Table2
joinid
flag2
cond2
date
我希望输出为:

flag1,flag2,cond1,cond2
其中,对于表2中的结果,cond1始终为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

如果我没有看错你的问题,你是在不同的行中查找两个表的结果。这是通过一个并集而不是左连接实现的:


两个cond2字段是否需要放在一个目标字段中? 过滤器需要使用哪个日期字段

假设没有和表1

挑选 t1.joinid, t1.1, t2.2, 如果t1.cond1不为空,则cond1 else 600结束为cond1 t1.cond2与t1cond2相同, t2.cond2与t2cond2相同 来自表1 t1 左联接表2 t1上的t2。joinid=t2.joinid
t1.date在date1、date2、date3等中的位置

那么它必须是一个联合体?使用联接无法做到这一点?联接用于从多个表返回包含列的行。你会得到一个结果集,像table1col1,table1col2,…,table2col1,table2col2,…,对。我没有想到这一点。那时候,工会对我最合适。谢谢你的帮助!
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'