Thursday, March 5, 2020

Oracle PIVOT

SELECT * FROM DailyIncome
VendorIdIncomeDayIncomeAmount
SPIKEFRI100
SPIKEMON300
FREDSSUN400
SPIKEWED500
SPIKETUE200
JOHNSWED900
SPIKEFRI100
JOHNSMON300
SPIKESUN400
JOHNSFRI300
FREDSTUE500
FREDSTUE200
SPIKEMON900
FREDSFRI900
FREDSMON500
JOHNSSUN600
SPIKEFRI300
SPIKEWED500
SPIKEFRI300
JOHNSTHU800
JOHNSSAT800
SPIKETUE100
SPIKETHU300
FREDSWED500
SPIKESAT100
FREDSSAT500
FREDTHU800
JOHNSTUE600

Query (A)

SELECT * FROM DailyIncome
PIVOT (SUM (IncomeAmount) FOR IncomeDay IN
([MON],[TUE],[WED],[THU],[FRI],[SAT],[SUN])) AS AvgIncome

VendornameMonTueWedThuFriSatSun
AMIT475150475300200100400
PANKAJ360600920800300800600
VINAY500350500800900500400

Tuesday, March 3, 2020

Oracle tree hierarchical query

In a hierarchical querytraverse the tree from the branch level to the top

select *
from EMP
start with EMPNO = :x
connect by prior MGR = EMPNO;

Oracle tree queries

SELECT parent_COST_CENTER_ID,COST_CENTER_ID,sum(parent_price) parent_price,lVL
FROM(
        SELECT parent_COST_CENTER_ID,COST_CENTER_ID,
            (TOTAL_ACTUAL_DEBIT) parent_price,lVL
        FROM COST_JOURNALTREES
        WHERE BRANCH_ID = 216
    ) t
GROUP BY parent_COST_CENTER_ID,COST_CENTER_ID,LVL
/

select DISTINCT
   connect_by_root parent_COST_CENTER_ID rootParent,  
   PARENT_SUM,
   COST_CENTER_ID,
   TOTAL_ACTUAL_DEBIT,
   prior TOTAL_ACTUAL_DEBIT prior_TOTAL_ACTUAL_DEBIT,
   level lvl
 FROM
   COST_JOURNALTREES
   WHERE BRANCH_ID = 216 --AND cost_center_id = 407--IN (427,409,407)
   START WITH PARENT_COST_CENTER_ID IS NOT NULL
   connect by prior COST_CENTER_ID = parent_COST_CENTER_ID
/

Wednesday, February 12, 2020

Oracle sql 11g virtual column

CREATE TABLE employees (
  id          NUMBER,
  first_name  VARCHAR2(10),
  last_name   VARCHAR2(10),
  salary      NUMBER(9,2),
  comm1       NUMBER(3),
  comm2       NUMBER(3),
  salary1     AS (ROUND(salary*(1+comm1/100),2)),
  salary2     NUMBER GENERATED ALWAYS AS (ROUND(salary*(1+comm2/100),2)) VIRTUAL,
  CONSTRAINT employees_pk PRIMARY KEY (id)
);

INSERT INTO employees (id, first_name, last_name, salary, comm1, comm2)
VALUES (1, 'JOHN', 'DOE', 100, 5, 10);

INSERT INTO employees (id, first_name, last_name, salary, comm1, comm2)
VALUES (2, 'JAYNE', 'DOE', 200, 10, 20);
COMMIT;
Querying the table shows the inserted data plus the derived commission-based salaries.
SELECT * FROM employees;

        ID FIRST_NAME LAST_NAME      SALARY      COMM1      COMM2    SALARY1    SALARY2
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
         1 JOHN       DOE               100          5         10        105        110
         2 JAYNE      DOE               200         10         20        220        240

2 rows selected.
The expression used to generate the virtual column is listed in the DATA_DEFAULT column of the [DBA|ALL|USER]_TAB_COLUMNS views.
COLUMN data_default FORMAT A50
SELECT column_name, data_default
FROM   user_tab_columns
WHERE  table_name = 'EMPLOYEES';

COLUMN_NAME                    DATA_DEFAULT
------------------------------ --------------------------------------------------
ID
FIRST_NAME
LAST_NAME
SALARY
COMM1
COMM2
SALARY1                        ROUND("SALARY"*(1+"COMM1"/100),2)

Tuesday, January 21, 2020

Oracle forms Create Alert

DECLARE
  Alert_ID        ALERT;
  n_alert_button  NUMBER;
BEGIN
  Alert_ID := Find_Alert('NOTE');
  Set_Alert_Property(Alert_ID, TITLE, 'Title of the Information here.');
  Set_Alert_Property(Alert_ID,ALERT_MESSAGE_TEXT, 'Enter date in format: MM/DD/YYYY');
  n_alert_button := Show_Alert(Alert_ID);
END;

Thursday, December 12, 2019

Oracle Forms Working with Alert

DECLARE
v_alert VARCHAR2(10);
v_name VARCHAR2(20);
BEGIN
v_name := :ALERT.name;
set_alert_property ('NOTE', title, 'Save Alert');
set_alert_property ('NOTE', alert_message_text, 'This is your Name :- '||v_name);
v_alert := SHOW_ALERT ('NOTE');
END;