求一sql语句 【sql2005】

tds__609 2014-02-12 10:21:07
表A 数据如下:

编号 计费日期
001 2013-03-01
001 2012-01-01

表B 数据如下:
编号 开始日期 结束日期
001 2011-01-01 2013-03-01
001 2013-03-01 (空)

现在求一SQL. 得到如下:

编号 计费日期 开始日期 结束日期
001 2013-03-01 2013-03-01
001 2012-01-01 2011-01-01 2013-03-01

描述: 就是得到某一计费日期输入哪个时间段,计费日期=结束日期的时候,
计费日期落在计费日期>结费日期的范围内。
求大神给个解决办法,谢谢
...全文
135 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
t101lian 2014-02-12
  • 打赏
  • 举报
回复

select b.[编号],
       a.[计费日期],
       b.[开始日期],
      isnull(b.[结束日期],'')
from b b 
left join a a  
on a.[编号]=b.[编号] 
Yole 2014-02-12
  • 打赏
  • 举报
回复

--> 测试数据:[a]
if object_id('[a]') is not null drop table [a]
go 
create table [a]([编号] varchar(6),[计费日期] datetime)
insert [a]
select '001','2013-03-01' union all
select '001','2012-01-01' 
--> 测试数据:[b]
if object_id('[b]') is not null drop table [b]
go 
create table [b]([编号] varchar(6),[开始日期] datetime,[结束日期] datetime)
insert [b]
select '001','2011-01-01','2013-03-01' union all
select '001','2013-03-01',null

--查询
select b.[编号],
       a.[计费日期],
       b.[开始日期],
       b.[结束日期]
from b b 
left join a a  
on a.[编号]=b.[编号] 
   and a.[计费日期]>=b.[开始日期] 
   and a.[计费日期]<isnull(b.[结束日期],'9999-01-01')

编号 计费日期 开始日期 结束日期 ------ ----------------------- ----------------------- ----------------------- 001 2012-01-01 00:00:00.000 2011-01-01 00:00:00.000 2013-03-01 00:00:00.000 001 2013-03-01 00:00:00.000 2013-03-01 00:00:00.000 NULL (2 行受影响)

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧