请问这样的sql语句怎么写法

meiyou 2009-03-26 04:37:15
表名 保单表 pol_main

字段描述 字段名
保单号 polno
投保人 appno
保费 prem
保额 amnt
投保日期 signdate


表名 投保人地址表 lcaddress

字段描述 字段名
投保人 appno
地址 address
邮编 zipcode
电话 phone
录入日期 makedate

以上两张表是一对多关系,关联字段是投保人
现在要求用sql语句取出保单表的所有字段和投保人的最新录入的一个地址邮编电话信息
列表如下
保单号 保费 保额 投保日期 投保人 投保人地址 投保人邮编 投保人电话
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
白发程序猿 2009-03-27
  • 打赏
  • 举报
回复
已经给出答案了,来晚了
ThinkingInJava110 2009-03-26
  • 打赏
  • 举报
回复
楼上两位高手思路都差不多,学习了!
robinhood1214 2009-03-26
  • 打赏
  • 举报
回复
SELECT a.Polno,
a.Prem,
a.Amnt,
a.Signdate,
a.Appno,
b.Address,
b.Zipcode,
b.Phone
FROM Pol_Main a,
(SELECT Appno,
Address,
Zipcode,
Phone
FROM (SELECT Appno,
Address,
Zipcode,
Phone,
Makedate,
Row_Number() Over(PARTITION BY Appno ORDER BY Makedate DESC) AS Rn
FROM Lcaddress)
WHERE Rn = 1) b
WHERE a.Appno = b.Appno;
Andy__Huang 2009-03-26
  • 打赏
  • 举报
回复
select a.polno ,a.prem ,a.amnt ,a.signdate ,a.appno,b.address ,b.zipcode ,b.phone ,b.makedate
from pol_main a
left join
(select *
from (select t.*,row_number() over(partition by appno order by 录入makedate 期 desc ) rn from lcaddress t)
where rn=1
)b
on a.appno=b.appno
chensi05 2009-03-26
  • 打赏
  • 举报
回复
感觉这个表结构有问题,没有投保人基本信息表,如果保单作为主表肯定会出笛卡尔集。
这个肯定要做嵌套了,按照时间排序,然后取每个保单的第一条就行了

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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