Possible Duplicate:
Oracle Rows to Column Transformation
My real problem is just like this but has many tables related to each other. So, I just created a example, so assuming if this gets solved, my real problem gets solved. Here are my tables :
tbl_products
tp_id | tp_name
1 apple
2 mango
3 pineapple
tbl_sales
ts_id | ts_location | ts_tp_id | ts_sales
1 NY 2 5
2 LN 2 10
3 QL 1 25
4 QL 3 20
5 LN 3 35
6 NY 3 50
7 NY 1 100
If I have these two tables, tbl_products and tbl_sales, how to create a query that has a dynamic columns like this :
sales_location | apple | mango | pineapple
NY 100 5 50
where apple, mango and pineapple should have the total number of sales according to location
Since you are using Oracle10g, there is no
PIVOT
function so you will have to perform this type of transformation using an aggregate function with aCASE
statement.If the values are known ahead of time, then you can hard code them in a static version:
See SQL Fiddle with Demo
But if you values are not known ahead of time, then you have to implement dynamic sql and in Oracle you will want to use a procedure for this:
Then to return the results you can use (note: this is how I do it in Toad):
Both will return the result: