Home » SQL & PL/SQL » SQL & PL/SQL » The Subqury Returns So Many Rows (SQL*PLUS)
The Subqury Returns So Many Rows [message #607417] Thu, 06 February 2014 02:35 Go to next message
nalrefai
Messages: 2
Registered: February 2014
Location: SAUDI ARABIA
Junior Member
Dear Geeks,
Can anyone help me in this issue ,
The required is to generate a report to get all the necessary information related to the employee Salary.
Actually the Data required is stored in rows in the Database.
So I generated a query to retrieve it as a columns , but unfortunately it gave me what I wanted but in several rows.

SELECT ASSIGNMENT_NUMBER ,

            nvl(Basic_Salary,0) BASIC_SALARY,

            NVL(HA_RATE,0) HOUSING,

            NVL(TA_RATE,0) TRANSPORTATION,

           NVL(SUM_EARNING,0)   OTHER_EARNING,

            NVL(SUM_DEDUCTION,0) OTHER_DEDUCTION,

            nvl(Basic_Salary,0) +  NVL(HA_RATE,0) +  NVL(TA_RATE,0)  + NVL(SUM_EARNING,0) + NVL(SUM_DEDUCTION,0) TOTAL_SALARY

FROM 

(SELECT ASSIGNMENT_NUMBER ,

           
           
          ( SELECT   prrv1.result_value       

           FROM  pay_payroll_actions ppa
            ,pay_assignment_actions paa
            ,pay_run_results prr
            ,pay_run_result_values prrv1
            ,pay_input_values_x piv
            ,pay_element_types_x pet
            ,per_assignments_x paaf
            ,apps.pay_element_classifications pec
            where ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
            and paa.ASSIGNMENT_ID = paaf.ASSIGNMENT_ID

            and paa.ASSIGNMENT_ID  = pf.ASSIGNMENT_ID

            and ppa.ACTION_TYPE = 'R'
             and ppa.ACTION_STATUS ='C'
            and prr.ASSIGNMENT_ACTION_ID = paa.ASSIGNMENT_ACTION_ID
            and prr.RUN_RESULT_ID = prrv1.RUN_RESULT_ID
            and prrv1.INPUT_VALUE_ID = piv.INPUT_VALUE_ID
            and pet.ELEMENT_TYPE_ID = prr.ELEMENT_TYPE_ID
            and pet.CLASSIFICATION_ID = pec.CLASSIFICATION_ID
            and ppa.EFFECTIVE_DATE >=  '01-JAN-2014'  and ppa.EFFECTIVE_DATE <=  '31-JAN-2014'--:PAYROLL_DATE --'23-FEB-2012'
            and prrv1.INPUT_VALUE_ID=prrv.INPUT_VALUE_ID
                  AND pet.element_name  IN ('Basic Salary')
            
                  AND pec.CLASSIFICATION_NAME LIKE '%Earnings%'

                  AND piv.NAME = 'Pay Value'

                  AND TRUNC(SYSDATE) BETWEEN Paaf.EFFECTIVE_START_DATE AND paaf.EFFECTIVE_END_DATE
                  ) Basic_Salary ,

               (SELECT   prrv2.result_value         

           FROM  pay_payroll_actions ppa
            ,pay_assignment_actions paa
            ,pay_run_results prr
            ,pay_run_result_values prrv2
            ,pay_input_values_x piv
            ,pay_element_types_x pet
            ,per_assignments_x paaf
            ,apps.pay_element_classifications pec
            where ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
            and paa.ASSIGNMENT_ID = paaf.ASSIGNMENT_ID

                  and paa.ASSIGNMENT_ID  = PF.ASSIGNMENT_ID

                  and ppa.ACTION_TYPE = 'R'

            and prr.ASSIGNMENT_ACTION_ID = paa.ASSIGNMENT_ACTION_ID
            and prr.RUN_RESULT_ID = prrv2.RUN_RESULT_ID
            and prrv2.INPUT_VALUE_ID = piv.INPUT_VALUE_ID
            and pet.ELEMENT_TYPE_ID = prr.ELEMENT_TYPE_ID
            and pet.CLASSIFICATION_ID = pec.CLASSIFICATION_ID
            and ppa.EFFECTIVE_DATE >=  '01-JAN-2014'  and ppa.EFFECTIVE_DATE <=  '31-JAN-2014'--:PAYROLL_DATE --'23-FEB-2012'
            and prrv2.INPUT_VALUE_ID=prrv.INPUT_VALUE_ID
      AND pet.element_name  IN ('Housing Allowance')

      AND pec.CLASSIFICATION_NAME LIKE '%Earnings%'

      AND piv.NAME = 'Pay Value'

      AND TRUNC(SYSDATE) BETWEEN Paaf.EFFECTIVE_START_DATE AND paaf.EFFECTIVE_END_DATE
       ) HA_RATE,


      (SELECT   prrv.result_value         

           FROM  pay_payroll_actions ppa
            ,pay_assignment_actions paa
            ,pay_run_results prr
            ,pay_run_result_values prrv3
            ,pay_input_values_x piv
            ,pay_element_types_x pet
            ,per_assignments_x paaf
            ,apps.pay_element_classifications pec
            where ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
            and paa.ASSIGNMENT_ID = paaf.ASSIGNMENT_ID

      and paa.ASSIGNMENT_ID  = PF.ASSIGNMENT_ID
         and prrv3.INPUT_VALUE_ID=prrv.INPUT_VALUE_ID
      and ppa.ACTION_TYPE = 'R'

            and prr.ASSIGNMENT_ACTION_ID = paa.ASSIGNMENT_ACTION_ID
            and prr.RUN_RESULT_ID = prrv3.RUN_RESULT_ID
            and prrv3.INPUT_VALUE_ID = piv.INPUT_VALUE_ID
            and pet.ELEMENT_TYPE_ID = prr.ELEMENT_TYPE_ID
            and pet.CLASSIFICATION_ID = pec.CLASSIFICATION_ID
            and ppa.EFFECTIVE_DATE >=  '01-JAN-2014'  and ppa.EFFECTIVE_DATE <=  '31-JAN-2014'--:PAYROLL_DATE --'23-FEB-2012'
      
      AND pet.element_name  IN ('Transportation Allowance')

      AND pec.CLASSIFICATION_NAME LIKE '%Earnings%'

      AND piv.NAME = 'Pay Value'

      AND TRUNC(SYSDATE) BETWEEN Paaf.EFFECTIVE_START_DATE AND paaf.EFFECTIVE_END_DATE
       ) TA_RATE,      

      (SELECT   SUM(prrv.result_value)         

           FROM  pay_payroll_actions ppa
            ,pay_assignment_actions paa
            ,pay_run_results prr
            ,pay_run_result_values prrv4
            ,pay_input_values_x piv
            ,pay_element_types_x pet
            ,per_assignments_x paaf
            ,apps.pay_element_classifications pec
            where ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
            and paa.ASSIGNMENT_ID = paaf.ASSIGNMENT_ID

      and paa.ASSIGNMENT_ID  = PF.ASSIGNMENT_ID

      and ppa.ACTION_TYPE = 'R'
            and PRRV.INPUT_VALUE_ID=PRRV4.INPUT_VALUE_ID
            and prr.ASSIGNMENT_ACTION_ID = paa.ASSIGNMENT_ACTION_ID
            and prr.RUN_RESULT_ID = prrv4.RUN_RESULT_ID
            and prrv4.INPUT_VALUE_ID = piv.INPUT_VALUE_ID
            and pet.ELEMENT_TYPE_ID = prr.ELEMENT_TYPE_ID
            and pet.CLASSIFICATION_ID = pec.CLASSIFICATION_ID
            and ppa.EFFECTIVE_DATE >=  '01-JAN-2014'  and ppa.EFFECTIVE_DATE <=  '31-JAN-2014'--:PAYROLL_DATE --'23-FEB-2012'
            and prrv4.INPUT_VALUE_ID=prrv.INPUT_VALUE_ID
      AND pet.element_name NOT IN ('Basic Salary','Transportation Allowance','Housing Allowance')

      AND pec.CLASSIFICATION_NAME in( 'Earnings','Direct Payment')

      AND piv.NAME = 'Pay Value'

      AND TRUNC(SYSDATE) BETWEEN Paaf.EFFECTIVE_START_DATE AND paaf.EFFECTIVE_END_DATE


     ) SUM_EARNING,      

        (SELECT   SUM(prrv.result_value) *(-1)        

           FROM  pay_payroll_actions ppa
            ,pay_assignment_actions paa
            ,pay_run_results prr
            ,pay_run_result_values prrv5
            ,pay_input_values_x piv
            ,pay_element_types_x pet
            ,per_assignments_x paaf
            ,apps.pay_element_classifications pec
            where ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
            and paa.ASSIGNMENT_ID = paaf.ASSIGNMENT_ID

      and paa.ASSIGNMENT_ID  = PF.ASSIGNMENT_ID

      and ppa.ACTION_TYPE = 'R'
             and prrv5.INPUT_VALUE_ID=prrv.INPUT_VALUE_ID
            and prr.ASSIGNMENT_ACTION_ID = paa.ASSIGNMENT_ACTION_ID
            and prr.RUN_RESULT_ID = prrv5.RUN_RESULT_ID
            and prrv5.INPUT_VALUE_ID = piv.INPUT_VALUE_ID
            and pet.ELEMENT_TYPE_ID = prr.ELEMENT_TYPE_ID
            and pet.CLASSIFICATION_ID = pec.CLASSIFICATION_ID
            and ppa.EFFECTIVE_DATE >=  '01-JAN-2014'  and ppa.EFFECTIVE_DATE <=  '31-JAN-2014'--:PAYROLL_DATE --'23-FEB-2012'
      
      AND pet.element_name NOT IN ('Basic Salary','Transportation Allowance','Housing Allowance')

      AND pec.CLASSIFICATION_NAME in('Involuntary Deductions','Statutory Deductions','Voluntary Deductions')

      AND piv.NAME = 'Pay Value'

      AND TRUNC(SYSDATE) BETWEEN paaf.EFFECTIVE_START_DATE AND paaf.EFFECTIVE_END_DATE

     

     ) SUM_Deduction

        FROM PER_ALL_ASSIGNMENTS_F pf,

       pay_payroll_actions ppa
            ,pay_assignment_actions paa
            ,pay_run_results prr
            ,pay_run_result_values prrv
            ,pay_input_values_x piv
            ,pay_element_types_x pet
             ,apps.pay_element_classifications pec
      WHERE 1=1 

      and  PF.ASSIGNMENT_NUMBER  = '3363'

     and ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
            and paa.ASSIGNMENT_ID = pf.ASSIGNMENT_ID

      and paa.ASSIGNMENT_ID  = PF.ASSIGNMENT_ID

      and ppa.ACTION_TYPE = 'R'

            and prr.ASSIGNMENT_ACTION_ID = paa.ASSIGNMENT_ACTION_ID
            and prr.RUN_RESULT_ID = prrv.RUN_RESULT_ID
            and prrv.INPUT_VALUE_ID = piv.INPUT_VALUE_ID
            and pet.ELEMENT_TYPE_ID = prr.ELEMENT_TYPE_ID
            and pet.CLASSIFICATION_ID = pec.CLASSIFICATION_ID
            and ppa.EFFECTIVE_DATE >=  '01-JAN-2014'  and ppa.EFFECTIVE_DATE <=  '31-JAN-2014'--:PAYROLL_DATE --'23-FEB-2012'
      
      

    

      AND piv.NAME = 'Pay Value'

      AND TRUNC(SYSDATE) BETWEEN pf.EFFECTIVE_START_DATE AND pf.EFFECTIVE_END_DATE

     
      ORDER BY ASSIGNMENT_NUMBER)


Please check the picture
/forum/fa/11672/0/
  • Attachment: 1.JPG
    (Size: 71.72KB, Downloaded 960 times)
Re: The Subqury Returns So Many Rows [message #607419 is a reply to message #607417] Thu, 06 February 2014 02:49 Go to previous messageGo to next message
Littlefoot
Messages: 21807
Registered: June 2005
Location: Croatia, Europe
Senior Member
Account Moderator
By far, the simplest solution might be this:
select 
  assignment_number,
  sum(basic_salary)    basic_salary,
  sum(housing)         housing,
  sum(transportation)  transportation,
  sum(other_earning)   other_earning,
  sum(other_deduction) other_deduction,
  sum(total_salary)    total_salary
from (<your query goes here)
group by assignment_number;

Is it optimal? Can't tell, you'll need to wait for someone smarter than me.
Re: The Subqury Returns So Many Rows [message #607421 is a reply to message #607419] Thu, 06 February 2014 03:01 Go to previous message
nalrefai
Messages: 2
Registered: February 2014
Location: SAUDI ARABIA
Junior Member
Littlefoot

I can not find smarter than you .

it worked fine
I did the complicated one and I lift the easiest one
thank you
Previous Topic: Sql Loop
Next Topic: Provide the output
Goto Forum:
  


Current Time: Fri Apr 19 20:05:31 CDT 2024