Question : how to change column in to row header

hi everyone i have this query which gives me correct results but i want to change the season column to row header for example right now the query print the results as follow

BRANCH_CODE         SEASON        TOTAL_SP_VALUE       TOTAL_CP_VALUE
001                               R season         £200000                       £15670
002                               R season         £1456788                     £7654
and so on

what i want is

BRANCH_CODE           R SEASON_SP        QSEASON_SP      OLD_SEASON_SP    R SEASON_CP        QSEASON_CP      OLD_SEASON_CP


i have attached one workbook with the current data format sheet  and also required format shee, please help how can i do that
Code Snippet:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
SELECT b.branch_code  ,    
'Q SEASON',
 'TOTAL_FREE_UNITS'= SUM(PH.stock_units_free+PH.stock_units_Qc+PH.stock_units_IT+ph.stock_units_dmg),    
 'TOTAL_SP_VALUE' = SUM(PH.STOCK_SPVALUE_FREE+PH.STOCK_SPVALUE_QC+PH.STOCK_SPVALUE_IT+ph.stock_spvalue_dmg),    
 'TOTAL_CP_VALUE' = SUM(PH.STOCK_CPVALUE_FREE+PH.STOCK_CPVALUE_QC+PH.STOCK_CPVALUE_IT+ph.stock_cpvalue_dmg)    
FROM PRODUCT_HISTORY ph, anal_level al,product_master pm  ,branch b    
WHERE ph.WEEK_SELECTOR = 1200123      
and ph.product_id = pm.prod_id      
and al.j_code = pm.j_code_link      
and al.level_no = 4      
and b.branch_id = ph.branch_id
and al.level1_desc in ('A/W 2008')      
group by b.branch_code   
 
union all
SELECT b.branch_code  ,
'R SEASON',    
 'TOTAL_FREE_UNITS'= SUM(PH.stock_units_free+PH.stock_units_Qc+PH.stock_units_IT+ph.stock_units_dmg),    
 'TOTAL_SP_VALUE' = SUM(PH.STOCK_SPVALUE_FREE+PH.STOCK_SPVALUE_QC+PH.STOCK_SPVALUE_IT+ph.stock_spvalue_dmg),    
 'TOTAL_CP_VALUE' = SUM(PH.STOCK_CPVALUE_FREE+PH.STOCK_CPVALUE_QC+PH.STOCK_CPVALUE_IT+ph.stock_cpvalue_dmg)    
FROM PRODUCT_HISTORY ph, anal_level al,product_master pm  ,branch b    
WHERE ph.WEEK_SELECTOR = 1200123      
and ph.product_id = pm.prod_id      
and al.j_code = pm.j_code_link      
and al.level_no = 4      
and b.branch_id = ph.branch_id
and al.level1_desc in ('S/S 2008')      
group by b.branch_code 
union all
SELECT b.branch_code  ,
'ALL SEASON',    
 'TOTAL_FREE_UNITS'= SUM(PH.stock_units_free+PH.stock_units_Qc+PH.stock_units_IT+ph.stock_units_dmg),    
 'TOTAL_SP_VALUE' = SUM(PH.STOCK_SPVALUE_FREE+PH.STOCK_SPVALUE_QC+PH.STOCK_SPVALUE_IT+ph.stock_spvalue_dmg),    
 'TOTAL_CP_VALUE' = SUM(PH.STOCK_CPVALUE_FREE+PH.STOCK_CPVALUE_QC+PH.STOCK_CPVALUE_IT+ph.stock_cpvalue_dmg)    
FROM PRODUCT_HISTORY ph, anal_level al,product_master pm  ,branch b    
WHERE ph.WEEK_SELECTOR = 1200123      
and ph.product_id = pm.prod_id      
and al.j_code = pm.j_code_link      
and al.level_no = 4      
and b.branch_id = ph.branch_id
and al.level1_desc not in ('S/S 2008','A/W 2008')      
 
group by b.branch_code
Open in New Window Select All

Answer : how to change column in to row header

ammartahir1978,
     What yo uneed to do is a "pivot" but I saw this under the PL/SQL (oracle) sectio.  I hope you can see how to do the equivalent.  You need to "decode" the column values  and sum them to get what you want:

select branch_code, sum(decode(season,'R_SEASON',TOTAL_SP_VALUE)) as "R SEASON_SP",
          sum(decode(season,'Q_SEASON',TOTAL_SP_VALUE)) as "Q SEASON_SP",
          sum(decode(season,'OLD_SEASON',TOTAL_SP_VALUE)) as "OLD SEASON_SP",
          sum(decode(season,'R_SEASON',TOTAL_CP_VALUE)) as "R SEASON_CP",
          sum(decode(season,'Q_SEASON',TOTAL_CP_VALUE)) as "Q SEASON_CP",
          sum(decode(season,'OLD_SEASON',TOTAL_CP_VALUE)) as "OLD SEASON_CP"
from ()

Good luck!
Random Solutions  
 
programming4us programming4us