0

好的,昨天我问了一个问题并得到了很好的答案。我回来寻求更多帮助,天哪,我需要它吗!!!

昨天的问题在这里:昨天的问题 - 与 Sum 和 Distinct 函数有关

- 该链接指向本网站内的另一个问题

今天我在结果中为返回的每一行添加了一个地址,问题是当我返回一个地址时,我发现人们输入的地址不同。主街 123 号 或 123 Main Street 等。问题是我能否仅提取所述地址的最新版本或单次出现,并且仍然像我在上面的链接中成功完成的那样计算保费?

这是我所拥有的,但它不起作用:

Select (Agency_Book_View.agency_no || '-' || Agency_Book_View.branch_no) AS "AGENCY-BRANCH",
   Agency.Agy_Name,
   SUM(Agency_Book_View.annual_premium) AS Premium,
   Branch.Mail_Address1,
   Agency_Book_View.effective_date
  from Branch
  INNER JOIN Agency_Book_View
on Branch.Agency_No = Agency_book_view.agency_no 
    INNER JOIN Agency
on Branch.Agency_No = Agency.agency_no
 INNER JOIN Comp_Agy on Branch.Agency_No = comp_agy.agency_no 
WHERE COMP_AGY.expiration_date = TO_DATE('12-31-2078','MM-DD-YYYY')
Group by (Agency_Book_View.agency_no || '-' || Agency_Book_View.branch_no),
   Agency.Agy_Name,
   Branch.Mail_Address1,
   Agency_Book_View.Effective_Date
Order by (Agency_Book_View.agency_no || '-' || Agency_Book_View.branch_no)

结果

再次,我真的很感激任何和所有的帮助!

布拉德

4

1 回答 1

0

我怀疑答案看起来像这样:

Select (Agency_Book_View.agency_no || '-' || Agency_Book_View.branch_no) AS "AGENCY-BRANCH",
       Agency.Agy_Name,
       SUM(Agency_Book_View.annual_premium) AS Premium,
       MAX(case when seqnum = 1 then Agency_Book_View.address end) as address,
       Branch.Mail_Address1,
       Agency_Book_View.effective_date
from Branch INNER JOIN
     (select *,
             ROW_NUMBER() over (partition by agency_no order by AddressDate desc) as seqnum
      from Agency_Book_View
     ) Agency_Book_View
     on Branch.Agency_No = Agency_book_view.agency_no INNER JOIN
     Agency
     on Branch.Agency_No = Agency.agency_no INNER JOIN
        Comp_Agy on Branch.Agency_No = comp_agy.agency_no 
WHERE COMP_AGY.expiration_date = TO_DATE('12-31-2078','MM-DD-YYYY')
Group by (Agency_Book_View.agency_no || '-' || Agency_Book_View.branch_no),
   Agency.Agy_Name,
   Branch.Mail_Address1,
   Agency_Book_View.Effective_Date
Order by (Agency_Book_View.agency_no || '-' || Agency_Book_View.branch_no)

这会在表中添加一个序列号,看起来好像有地址,使用row_number(). 它假设存在一个字段来确定最近的;我在猜名字 它在外部使用聚合函数select来选择第一个值。

于 2012-12-12T20:23:24.897 回答