2012-12-12 2 views
0

어제, 어제 제가 질문을하고 훌륭한 대답을 얻었습니다. 나는 더 많은 도움을 위해 돌아왔다. 그리고 나는 그것을 필요로한다.합계 기능을 사용하는 동안 단일 발생 또는 가장 최근 응답

여기

어제 질문 : Yesterday's Question - had to do with Sum and Distinct functions

년 - 링크가 나는 결과로 반환되는 각 행에 대한 주소를 추가하고 오늘, 문제는 내가 돌아올 때이다

이 사이트 내의 다른 질문입니다 주소 나는 사람들이 다르게 전진했다는 것을 발견하고있다. 123 Main ST. 또는 123 메인 스트리트 등. 내가 성공적으로 위의 링크에서 한 질문은 내가 가장 최근의 버전 또는 단 한 번의 언급으로 상기 주소와 여전히 합계 프리미엄을받을 수 있는가? 여기

내가 가진 그 작동하지 않는 것입니다 :

가 다시 말하지만, 내가 진정으로 어떤 모든 도움을 주셔서 감사합니다

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) 

결과!

브래드

+0

주소는 어디에 저장되며 가장 최근의 주소는 어떻게 알 수 있습니까? –

+0

주소는 Branch 테이블에 저장되며 최근 주소 인 경우 정직하게 중요하지 않습니다. 차별화 할 수있는 방법으로 사용했습니다. 단지 하나의 사건을 끌어내는 더 좋은 방법이 있다면 나는 그것을 위해 모든 것입니다. 감사! – Brad

답변

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에있는 집계 함수를 사용하여 첫 번째 값을 선택합니다.

+0

FROM 키워드가 예상 한 위치에 없다는 것을 나타내는 선택 * 후에 오류가 발생합니다. 다시 고든 고마워! 나는 당신과 함께 일할 수 없거나 당신 앞에서 데이터를 가지고있을 때 이것이 어려워야한다는 것을 알고 있습니다. 나는 상상할 수 없었다. – Brad