Hi,
I want fetch total_resale value based on quote_id and group by item_class but its not fetching proper result. Please find DDL, DML and function as below,
DDL:
CREATE TABLE QUOTE_TEST
(
ITEM_CLASS VARCHAR2(20 BYTE)
, QUOTE_ID NUMBER
, T_COST NUMBER
, T_RESALE NUMBER
)
/
DML:
SET DEFINE OFF;
Insert into QUOTE_TEST (ITEM_CLASS,QUOTE_ID,T_COST,T_RESALE) values ('A',1,1000,null);
Insert into QUOTE_TEST (ITEM_CLASS,QUOTE_ID,T_COST,T_RESALE) values ('A',1,2000,null);
Insert into QUOTE_TEST (ITEM_CLASS,QUOTE_ID,T_COST,T_RESALE) values ('A',1,3000,null);
Insert into QUOTE_TEST (ITEM_CLASS,QUOTE_ID,T_COST,T_RESALE) values ('A',1,4000,null);
Insert into QUOTE_TEST (ITEM_CLASS,QUOTE_ID,T_COST,T_RESALE) values ('A',1,5000,null);
Insert into QUOTE_TEST (ITEM_CLASS,QUOTE_ID,T_COST,T_RESALE) values ('B',1,1000,1);
Insert into QUOTE_TEST (ITEM_CLASS,QUOTE_ID,T_COST,T_RESALE) values ('B',1,2000,2);
Insert into QUOTE_TEST (ITEM_CLASS,QUOTE_ID,T_COST,T_RESALE) values ('B',1,3000,3);
Insert into QUOTE_TEST (ITEM_CLASS,QUOTE_ID,T_COST,T_RESALE) values ('B',1,4000,4);
Insert into QUOTE_TEST (ITEM_CLASS,QUOTE_ID,T_COST,T_RESALE) values ('B',1,5000,5);
commit;
Function:
create or replace FUNCTION t_resale_test ( p_quote_id quote_test.quote_id%TYPE ) RETURN NUMBER AS
v_total_resale NUMBER;
BEGIN
SELECT
SUM(qt.T_COST * qt.T_RESALE)
INTO
v_total_resale
FROM
quote_test qt
WHERE
qt.quote_id = p_quote_id;
RETURN v_total_resale;
END t_resale_test;
Query:
select a.quote_id,a.item_class,sum(a.total_resale)
from
(select qt.quote_id,qt.ITEM_CLASS, t_resale_test(qt.quote_id)total_resale from quote_test qt)a
where a.quote_id = 1
group by a.item_class,a.quote_id;
I want to fetch the results as below,
quote_id|item_class|total_resale
1 | A | 0
1 | B | 55000
Please suggest.
Thanks