根据表格中的日期指定标记期间名称

时间:2015-05-22 15:24:37

标签: sql-server sql-server-2008

我有一个包含三列的表:每个报告期的开始和结束日期以及期间的名称。我有第二张桌子,里面有一堆日期。我正在尝试创建第三个表,该表具有第二个表中的日期,其中包含第一个表中标记期的名称。

我知道我可以通过将第一个表中的日期硬编码到一堆CASE语句中来实现这一点。还有更好的方法吗?

2 个答案:

答案 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。但是,请尝试以下任何一种方法:

  1. 创建表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>
  2. 创建表table3为select t2。*,t1.period_name from table2 t2,table1 t1 where t2.start_date = t1.start_date或t2.end_date = t1.end_date;