我有一个包含三列的表:每个报告期的开始和结束日期以及期间的名称。我有第二张桌子,里面有一堆日期。我正在尝试创建第三个表,该表具有第二个表中的日期,其中包含第一个表中标记期的名称。
我知道我可以通过将第一个表中的日期硬编码到一堆CASE语句中来实现这一点。还有更好的方法吗?
答案 0 :(得分:0)
这应该有效:
select t1.SomeDate, t2.PeriodName
from Table1 t1
left join table2 t2 on t1.SomeDate >= t2.DateFrom and t1.SomeDate <= t2.DateTo
答案 1 :(得分:0)
我真的不知道你是否需要table2中的所有日期,即使table1中相应的name_period为null或table1中的所有name_period,其中table2中的所有相应日期都为null。但是,请尝试以下任何一种方法:
创建表table3作为select t2.start_date,t2.end_date,t1.period_name from table2 t2,table1 t1 where t2.start_date = t1.start_date或t2.end_date = t1.end_date;
< / LI>创建表table3为select t2。*,t1.period_name from table2 t2,table1 t1 where t2.start_date = t1.start_date或t2.end_date = t1.end_date;