Skip to content

Instantly share code, notes, and snippets.

@jalex19100
Created November 11, 2015 22:25
Show Gist options
  • Select an option

  • Save jalex19100/cc7830d69fe690d1f690 to your computer and use it in GitHub Desktop.

Select an option

Save jalex19100/cc7830d69fe690d1f690 to your computer and use it in GitHub Desktop.
Oracle Unpivot with Tuple magic
-- Personal preference for unpivot
SELECT
SUBSTR(CLMN, 0, INSTR(CLMN,'_TOTAL_FROM', 1, 1)-1) AS COLOR, COUNT, COUNT/TOTAL*100 || '%' AS PCT, TOTAL, FROM_DATE, TO_DATE
FROM (
WITH SUMMARY AS
(SELECT
TO_DATE('2015-09-28','YYYY-MM-DD') AS FROM_DATE, TO_DATE('2015-10-01','YYYY-MM-DD') AS TO_DATE, 100000 AS TOTAL, 90000 AS BLUE,
5000 AS RED,3000 AS GREEN,0 AS YELLOW
FROM DUAL)
SELECT * FROM SUMMARY
UNPIVOT INCLUDE NULLS
(
(COUNT, TOTAL, FROM_DATE, TO_DATE)
FOR CLMN IN
((BLUE, TOTAL, FROM_DATE, TO_DATE), (RED, TOTAL, FROM_DATE, TO_DATE), (GREEN, TOTAL, FROM_DATE, TO_DATE), (YELLOW, TOTAL, FROM_DATE, TO_DATE))
) T
);
@jalex19100
Copy link
Author

Results:

COLOR COUNT PCT TOTAL FROM_DATE TO_DATE
BLUE 90000 90% 100000 28-SEP-15 01-OCT-15
RED 5000 5% 100000 28-SEP-15 01-OCT-15
GREEN 3000 3% 100000 28-SEP-15 01-OCT-15
YELLOW 0 0% 100000 28-SEP-15 01-OCT-15

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment