Top N Records

Hi All,

I want to display Top 'N' records based on the 'Profit' which i am calcualtion at run time in report

Guide me to proceed on this

Thanks

R.Vasanth




Answer this question

Top N Records

  • asureus

    There should be a couple of ways, but what i would probably do is to create a sub report which is a child of a report that displays "Profit". I would send value of "Profit" to the subreport and the subreport would simply display top N records according to that profile parameter value.


  • Upsetian

    Thanks for you reply.

    Could you explain me in more details

    This is the query. I have not used store procedure.

    i have to implement the same query in ODBC.

    select CUST_ACCOUNT_NUMBER, CUST_ACCOUNT_NAME,rev_source,sum(total_amt),sum(total_Cost),sum(profitability)

    from

    (

    SELECT

    CST.CUST_ACCOUNT_NUMBER, CST.CUST_ACCOUNT_NAME, 'SALES' as rev_source,

    SUM (LINE.LINE_Amount) TOTAL_AMT,

    ISNULL(SUM (AP.TOTAL_ASSEMBLED_COST),0) TOTAL_COST,

    ISNULL(SUM (LINE.LINE_Amount),0) - ISNULL(SUM (AP.TOTAL_ASSEMBLED_COST),0) AS PROFITABILITY

    FROM CUSTOMER_ACCOUNTS CST, INVOICES INV, ASSEMBLED_PRODUCTS AP,

    INVOICE_LINES LINE, QUICK_CODES INV_TYP, QUICK_CODES ITEM_TYPE

    WHERE

    INV.INVOICE_DATE BETWEEN '01-jan-2005' AND '31-dec-2006'

    AnD INV.INVOICE_ID = LINE.INVOICE_ID

    AND INV_TYP.CATEGORY = 'INVOICE_SOURCE_TYPES'

    AND INV_TYP.QUICK_CODE_ID = INV.INVOICE_SOURCE_TYPE_ID

    AND INV_TYP.QUICK_CODE = 'SALES'

    AND INV.Bill_To_Account_ID = CST.Cust_Account_ID

    AND ITEM_TYPE.CATEGORY = 'INVOICE_ITEM_TYPES'

    AND ITEM_TYPE.QUICK_CODE_ID = LINE.INVOICE_ITEM_TYPE_ID

    AND ITEM_TYPE.QUICK_CODE = 'MODEL'

    AND LINE.Invoice_Item_ID = AP.Assembled_Product_ID

    group by CST.CUST_ACCOUNT_NUMBER , CST.CUST_ACCOUNT_NAME

    union

    SELECT

    CST.CUST_ACCOUNT_NUMBER, CST.CUST_ACCOUNT_NAME, 'CONTRACTS' as rev_source,

    SUM (CL.CONTRACT_LINE_AMOUNT - ISNULL(CL.TOTAL_LINE_DISCOUNT_AMOUNT,0)) TOTAL_AMT,

    ISNULL(SUM (SD.AMOUNT),0) TOTAL_COST,

    ISNULL(SUM (CL.CONTRACT_LINE_AMOUNT - CL.TOTAL_LINE_DISCOUNT_AMOUNT),0) -

    ISNULL(SUM (SD.AMOUNT),0) AS PROFITABILITY

    FROM

    CUSTOMER_ACCOUNTS CST,ASSEMBLED_PRODUCTS AP,CONTRACTS CNT ,CONTRACT_LINES CL

    LEFT OUTER JOIN SUPPORT_ORDERS SO ON CL.CONTRACt_ID = SO.CONTRACT_ID AND SO.COVERED_PRODUCT_ID = CL.COVERED_PRODUCT_ID

    LEFT OUTER JOIN SUPPORT_DEBRIEFS SD ON SO.SUPPORT_ORDER_ID = SD.SUPPORT_ORDER_ID and chargeable_Flag = 0,

    COVERED_PRODUCTS CPD,QUICK_CODES STS

    WHERE

    CNT.CONTRACT_ISSUED_DATE BETWEEN '01-jan-2005' AND '31-dec-2006'

    AND CNT.BILL_TO_ACCOUNT_ID = CST.CUST_ACCOUNT_ID

    AND CNT.CONTRACT_ID = CL.CONTRACT_ID

    AND CL.COVERED_PRODUCT_ID = CPD.COVERED_PRODUCT_ID

    AND CPD.ASSEMBLED_PRODUCT_ID = AP.Assembled_Product_ID

    AND STS.CATEGORY = 'CONTRACT_STATUS'

    AND STS.QUICK_CODE_ID = CNT.CONTRACT_status_code_ID

    AND STS.QUICK_CODE = 'OPEN'

    group by CST.CUST_ACCOUNT_NUMBER, CST.CUST_ACCOUNT_NAME

    union

    SELECT CST.CUST_ACCOUNT_NUMBER, CST.CUST_ACCOUNT_NAME,'SUPPORT' as rev_source,

    isnull(SUM (SC.LINE_TOTAL),0) TOTAL_AMT, isnull(SUM (SD.AMOUNT),0) TOTAL_COST,

    isnull(SUM (SC.LINE_TOTAL),0) - isnull(SUM (SD.AMOUNT),0) as profitability

    FROM CUSTOMER_ACCOUNTS CST, ASSEMBLED_PRODUCTS AP,

    COVERED_PRODUCTS CPD,SUPPORT_ORDERS SO

    LEFT OUTER JOIN SUPPORT_DEBRIEFS SD ON SO.SUPPORT_ORDER_ID = SD.SUPPORT_ORDER_ID

    LEFT OUTER JOIN SUPPORT_CHARGES SC ON SC.SUPPORT_ORDER_ID = SO.SUPPORT_ORDER_ID

    WHERE SO.PROBLEM_OCCURED_DATE BETWEEN '01-jan-2005' AND '31-dec-2006'

    and SO.CUST_ACCOUNT_ID = CST.CUST_ACCOUNT_ID AND SO.CONTRACT_ID is null

    AND SO.COVERED_PRODUCT_ID = CPD.COVERED_PRODUCT_ID

    AND CPD.ASSEMBLED_PRODUCT_ID = AP.Assembled_Product_ID

    group by CST.CUST_ACCOUNT_NUMBER, CST.CUST_ACCOUNT_NAME

    ) cstxpro

    where (total_amt != 0 or total_cost != 0 or profitability != 0)

    group by CUST_ACCOUNT_NUMBER, CUST_ACCOUNT_NAME,rev_source

    order by sum(profitability) desc



  • Top N Records