Sql 从表源上具有列条件的联接中提取
我想提取一条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
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'