'Kindly anyone tell me the logic for oracle sql [duplicate]
User requirement:- 2 policies in each product code with Highest (Maximum) SUM INSURED How do I get 2 policies in each product code with Highest (Maximum) SUM INSURED
SELECT
PROD.MV_PREMIUM_REGISTER.T_DATE_DESC,
PROD.MV_PREMIUM_REGISTER.P_POLICY_NUMBER,
PROD.MV_PREMIUM_REGISTER.P_POLICY_STATUS,
PROD.MV_PREMIUM_REGISTER.VERSION,
PROD.MV_PREMIUM_REGISTER.P_RISK_INC_DATE,
PROD.MV_PREMIUM_REGISTER.P_OFFICE_LOC_ID,
PROD.MV_PREMIUM_REGISTER.LOCATION_DESC,
PROD.MV_PREMIUM_REGISTER.ZONE_DESC,
PROD.MV_PREMIUM_REGISTER.I_IMD_DESC,
PROD.MV_PREMIUM_REGISTER.P_SUB_IMD,
PROD.MV_PREMIUM_REGISTER.P_PRODUCT_ID,
PROD.MV_PREMIUM_REGISTER.P_RISK_EXPIRY_DATE,
PROD.MV_PREMIUM_REGISTER.P_GC_PLAN,
PROD.MV_PREMIUM_REGISTER.IMD_CHANNEL,
PROD.MV_PREMIUM_REGISTER.P_PRODUCT_DESC,
(PROD.MV_PREMIUM_REGISTER.SUM_INSURED) AS SUM_INSURED,
(PROD.MV_PREMIUM_REGISTER.GROSS_PREMIUM) AS GROSS_PREMIUM,
(PROD.MV_PREMIUM_REGISTER.STAMP_DUTY) AS STAMP_DUTY
FROM
PROD.MV_PREMIUM_REGISTER
WHERE
T_DATE_DESC BETWEEN '27-FEB-2022' AND '28-FEB-2022'
AND VERSION NOT LIKE '%E%'
AND LT_POLICY_YEAR = 1;
Solution 1:[1]
SELECT P_PRODUCT_ID,P_POLICY_NUMBER,SUM_INSURED from(
SELECT
PROD.MV_PREMIUM_REGISTER.P_PRODUCT_ID,
PROD.MV_PREMIUM_REGISTER.P_POLICY_NUMBER,
(PROD.MV_PREMIUM_REGISTER.SUM_INSURED) AS SUM_INSURED,
RANK() OVER(PARTITION BY P_PRODUCT_ID ORDER BY SUM_INSURED DESC) AS
RANK_COUNT
FROM
PROD.MV_PREMIUM_REGISTER
WHERE
T_DATE_DESC BETWEEN '27-FEB-2022' AND '28-FEB-2022'
AND VERSION NOT LIKE '%E%'
AND LT_POLICY_YEAR = 1) MVP where MVP.RANK_COUNT <3;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Anand Satheesh |
