求子查询语句,各位高手帮帮忙

jfliulang 2005-11-12 09:31:36
现有Table结构如下:
Table1: orgnization

Fields:,ID,OrgID,Province_name,Country_name,OrgstatusDate

Table2: Privince
Fields: ProvinceID,ProvinceName

Table3:Country
Fields: CountryID,CountryName

Table1里面有OrgID不唯一的很多条记录,OrgStatusDate记录每次状态改变的日期,也就是每修改一次状态,程序便往记录表里面插入一条记录。

现求返回一个临时表,符合如下条件:

第一,OrgStatusDate小于指定日期参数的保证OrgID唯一的,最近一条(max(OrgstatusDate)),的所有符合此条件的记录,并返回结果如下:

OrgID,ProvinceID,CountryID,OrgstatusDate

时间紧急,请各位高手帮帮忙,实在是想了几天没有想出来,Boss要杀人了。。。。。。
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
netcoder 2005-11-12
  • 打赏
  • 举报
回复
declare @d as datetime
set @d='2005-11-12 10:10:10'

select a.OrgID,c.ProvinceID,d.CountryName
a.OrgstatusDate
from orgnization a
where OrgstatusDate =
(select max(OrgstatusDate) from orgnization b where b.OrgID=a.OrgID)
and OrgstatusDate<@d

join Privince c
on a.ProvinceName=c.ProvinceName
join Country d
on a.CountryName=d.CountryName
xzlt 2005-11-12
  • 打赏
  • 举报
回复
select *
from orgnization a
where OrgstatusDate =
(select max(OrgstatusDate) from orgnization b where b.OrgID=a.OrgID)
left join Privince c
on a.ProvinceName=c.ProvinceName
left join Country d
on a.CountryName=d.CountryName
不过效率不太好,建议你还是修改一下数据库结构
love16 2005-11-12
  • 打赏
  • 举报
回复
楼主能否把数据稍微贴一点出来。
netcoder 2005-11-12
  • 打赏
  • 举报
回复
上面的语句有错误,这样改
declare @d as datetime
set @d='2005-11-12 10:10:10'

select a.OrgID,c.ProvinceID,d.CountryName
a.OrgstatusDate
from orgnization a

join Privince c
on a.ProvinceName=c.ProvinceName
join Country d
on a.CountryName=d.CountryName

where OrgstatusDate =
(select max(OrgstatusDate) from orgnization b where b.OrgID=a.OrgID)
and OrgstatusDate<@d


要是把Table1: orgnization的表结构这样修改
Fields:,ID,OrgID,ProvinceID,CountryID,OrgstatusDate
那也不用做表连接了

34,575

社区成员

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

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