UNPIVOT
An introduction to UNPIVOT
.
UNPIVOT
enables you to see columns as rows in a query result.
In our sales pipeline we have both the create date and the close date for each deal. If we run the following query:
SELECT created_date,
close_date,
product,
close_value
FROM sales_pipeline
WHERE deal_stage = "Won"
We would get back a table whose first several rows looked like this:
account | opportunity_id | created_date | close_date |
---|---|---|---|
Cancity | 1C1I7A6R | 2016-10-20 | 2017-03-01 |
Isdom | Z063OYW0 | 2016-10-25 | 2017-03-11 |
Bioholding | NL3JZH1Z | 2016-11-04 | 2017-03-10 |
Donquadtech | 0LVWSWEW | 2016-11-25 | 2017-03-06 |
Sumace | NHDTSMX2 | 2017-02-22 | 2017-03-02 |
Zencorporation | PNL17RE9 | 2017-02-22 | 2017-06-28 |
Zathunicon | 5EKN0BFN | 2017-02-22 | 2017-05-15 |
Mathtouch | R4LH95QS | 2017-02-22 | 2017-03-03 |
Genco Pura Olive Oil Company | REDGEUCP | 2017-02-22 | 2017-03-10 |
Ron-tech | 6KT5HAR6 | 2017-02-22 | 2017-03-05 |
Toughzap | 48AJ0X9E | 2017-02-22 | 2017-06-15 |
Warephase | RA1UBXY9 | 2017-02-22 | 2017-03-24 |
By modifying this query with an UNPIVOT
we could create a timeline for all the deals with when they were created and closed:
WITH B AS (
SELECT account, opportunity_id, created_date, close_date
FROM sales_pipeline
WHERE deal_stage = "Won"
)
SELECT *
FROM B
UNPIVOT ( date FOR date_type IN (created_date AS 'CREATED', close_date AS 'CLOSED') )
ORDER BY account, opportunity_id, date
account | opportunity_id | date_type | date |
---|---|---|---|
Acme Corporation | 04LU4OPA | CREATED | 2017-04-10 |
Acme Corporation | 04LU4OPA | CLOSED | 2017-06-11 |
Acme Corporation | 0AXGVKN8 | CREATED | 2017-02-24 |
Acme Corporation | 0AXGVKN8 | CLOSED | 2017-05-28 |
Acme Corporation | 10QXTLQX | CREATED | 2017-05-15 |
Acme Corporation | 10QXTLQX | CLOSED | 2017-06-25 |
Acme Corporation | 35GT4NM9 | CREATED | 2017-10-25 |
Acme Corporation | 35GT4NM9 | CLOSED | 2017-11-05 |
Acme Corporation | 3JMB4J8E | CREATED | 2017-10-05 |
Acme Corporation | 3JMB4J8E | CLOSED | 2017-10-07 |
Acme Corporation | 56ZJUSNG | CREATED | 2017-05-28 |
Acme Corporation | 56ZJUSNG | CLOSED | 2017-06-07 |
Acme Corporation | 5NW73ZRY | CREATED | 2017-05-06 |
Acme Corporation | 5NW73ZRY | CLOSED | 2017-05-22 |
Acme Corporation | 6RJE18RW | CREATED | 2017-03-19 |
Acme Corporation | 6RJE18RW | CLOSED | 2017-03-24 |
Acme Corporation | 7ASDRLM5 | CREATED | 2017-03-29 |
Next up: TABLESAMPLE
An introduction to TABLESAMPLE
.