Sunteți pe pagina 1din 5

--Step 1 CREATE TABLE transaction ( transaction_id NUMBER NOT NULL , transaction_type NUMBER NOT NULL , transaction_date DATE NOT

NULL , transaction_amount NUMBER NOT NULL , rental_id NUMBER NOT NULL , payment_method_type NUMBER NOT NULL , payment_account_number NUMBER , created_by NUMBER NOT NULL , creation_date DATE NOT NULL , last_updated_by NUMBER NOT NULL , last_update_date DATE NOT NULL , CONSTRAINT pk_transaction_id_1 PRIMARY KEY (transaction_id) , CONSTRAINT fk_transaction_type_1 FOREIGN KEY (transaction_type) REFERENCES common_lookup (common_lookup_id) , CONSTRAINT fk_payment_method_type_1 FOREIGN KEY (PAYMENT_METHOD_TYPE) REFERENCES common_lookup (common_lookup_id) , CONSTRAINT fk_c_lookup_8 FOREIGN KEY (created_by) REFERENCES system_user (system_user_id) , CONSTRAINT fk_c_lookup_9 FOREIGN KEY (last_updated_by) REFERENCES system_user (system_user_id)); CREATE SEQUENCE transaction_s1 START WITH 1001; --Step 2 Insert Into common_lookup (common_lookup_id, common_lookup_table, common_lookup_ column, common_lookup_code, common_lookup_type, common_looku p_meaning, created_by, creation_date, last_updated_by, last_upd ate_date) Values (common_lookup_s1.nextval, 'TRANSACTION', 'TRANSACTION_TYPE', 'C', 'C REDIT', 'Credit', 2, SYSDATE, 3, SYSDATE); Insert Into common_lookup (common_lookup_id, common_lookup_table, common_lookup_ column, common_lookup_code, common_lookup_type, common_looku p_meaning, created_by, creation_date, last_updated_by, last_upd ate_date) Values (common_lookup_s1.nextval, 'TRANSACTION', 'TRANSACTION_TYPE', 'D', 'D EBIT', 'Debit', 3, SYSDATE, 2, SYSDATE); --STEP 3 ALTER TABLE member ADD MEMBER_TYPE NUMBER; UPDATE MEMBER SET member_type = (SELECT common_lookup_id FROM common_lookup WHERE common_lookup_type = 'GROUP' ); ALTER TABLE member ADD CONSTRAINT member_type_1 Alter TABLE member CHECK(member_type IS NOT NULL);

ADD CONSTRAINT fk_member_type_1 FOREIGN KEY(member_type) REFERENCES common_lookup (common_lookup_id); UPDATE common_lookup SET common_lookup_column = 'MEMBER_TYPE' WHERE common_lookup_type IN ('GROUP', 'INDIVIDUAL'); INSERT INTO common_lookup (Select common_lookup_s1.nextval, cl.common_lookup_type, cl.common_lookup_meaning, cl.created_by, cl.creation_date, cl.last_updated_by, cl.last_update_date, 'TRANSACTION', 'PAYMENT_METHOD_TYPE', cl.common_lookup_code From common_lookup cl Where cl.common_lookup_column = 'CREDIT_CARD_TYPE'); INSERT INTO common_lookup (common_lookup_id, common_lookup_table, common_lookup_column, common_lookup_code, common_lookup_type, common_lookup_meaning, created_by, creation_date, last_updated_by, last_update_date) VALUES (common_lookup_s1.nextval, 'TRANSACTION', 'PAYMENT_METHOD_TYPE', NULL, 'CASH', 'Cash', 2, SYSDATE, 2, SYSDATE); --Step 4 SET SERVEROUTPUT ON SIZE 1000000 DECLARE --This is a user defined type (UDT) of a list TYPE date_array IS TABLE OF DATE; -- Declare local variable counter NUMBER := 0; date_list DATE_ARRAY := date_array('10-JAN-09','11-FEB-09','12-MAR-09','13-A PR-09', '14-MAY-09','15-JUN-09','16-JUL-09','17AUG-09', '18-SEP-09','19-OCT-09','20-NOV-09','21DEC-09', '11-JAN-09','12-FEB-09');

itemID NUMBER := 0; payTypeID NUMBER := 0; BEGIN FOR i IN 1..4 LOOP FOR j IN 1..date_list.COUNT LOOP --dbms_output.put('['||counter||'] '); --dbms_output.put_line(date_list(j)); INSERT INTO rental VALUES (rental_s1.nextval ,(Select contact_id From (Select contact_id From contact Order By dbms_random.value) Where rownum = 1) ,to_date(date_list(j)) ,to_date(date_list(j)) + 5 ,3 ,to_date(date_list(j)) ,2 ,Sysdate); Select item_id INTO itemID From (Select item_id From item Order By dbms_random.value) Where rownum = 1; INSERT INTO rental_item VALUES (rental_item_s1.nextval ,rental_s1.currval ,itemID ,3 ,to_date(date_list(j)) ,2 ,Sysdate ,(Select amount From price p Where p.item_id = itemID AND p.active_f lag = 'Y' AND p.price_type = 1024) ,1024); SELECT common_lookup_id INTO payTypeID FROM (SELECT common_lookup_id From common_lookup Where common_lookup_column = 'PA YMENT_METHOD_TYPE' Order By dbms_random.value) Where rownum = 1); INSERT INTO transaction VALUES (transaction_s1.nextval --TRANSACTION_ID ,(Select common_lookup_id From (Select common_lookup_id From common_ --TRANSACTION_TYPE Where common_lookup_meaning = '5 Day Order By dbms_random.value) Where rownum = 1) ,date_list(j) --TRANSACTION_DATE ,5 --TRANSACTION_AMOUNT ,rental_s1.currval

lookup Rental'

--RENTAL_ID ,payTypeID --PAYMENT_METHOD_TYPE ,(SELECT Case When cl.common_lookup_meaning = 'Cash' Then NULL Else 234857293 END --PAYMENT_ACCOUNT_NUMBER From common_lookup cl Where common_lookup_id = payTypeID) ,3 --CREATED_BY ,to_date(date_list(j)) --CREATION_DATE ,2 ,Sysdate); END LOOP; END LOOP; END; / --Step 5 COL COL COL COL COL COL MONTH FORMAT a6 BASE_REVENUE FORMAT $9,999.99 "10_PLUS" FORMAT $999.99 "20_PLUS" FORMAT $999.99 "10_PLUS_LESS_BASE" FORMAT $9,999.99 "20_PLUS_LESS_BASE" FORMAT $9,999.99

SELECT map.month_name AS MONTH , SUM(transaction_amount) BASE_REVENUE , SUM(transaction_amount)* 1.1 "10_PLUS" , SUM(transaction_amount)* 1.2 "20_PLUS" , SUM(transaction_amount)* 1.1 - SUM(transaction_amount) "10_PLUS_LESS_BA SE" , SUM(transaction_amount)* 1.2 - SUM(transaction_amount) "20_PLUS_LESS_BA SE" FROM transaction t , (SELECT 1 month_number , 'JAN' month_name FROM dual UNION ALL SELECT 2 month_number , 'FEB' month_name FROM dual UNION ALL SELECT 3 month_number , 'MAR' month_name FROM dual UNION ALL SELECT 4 month_number , 'APR' month_name FROM dual UNION ALL SELECT 5 month_number , 'MAY' month_name FROM dual UNION ALL SELECT 6 month_number , 'JUN' month_name FROM dual UNION ALL SELECT 7 month_number

, 'JUL' month_name FROM dual UNION ALL SELECT 8 month_number , 'AUG' month_name FROM dual UNION ALL SELECT 9 month_number , 'SEP' month_name FROM dual UNION ALL SELECT 10 month_number , 'OCT' month_name FROM dual UNION ALL SELECT 11 month_number , 'NOV' month_name FROM dual UNION ALL SELECT 12 month_number , 'DEC' month_name FROM dual) map WHERE EXTRACT(MONTH FROM t.transaction_date) = map.month_number GROUP BY map.month_name ORDER BY TO_DATE(map.month_name,'MON');

S-ar putea să vă placă și