Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Pivot table column alignment

Su.giApr 16 2015 — edited Apr 17 2015

Hi All,

   I am using Oracle database 11g for develop my application.

I am creating generic column report.

For this i have used PIVOT table concept.

My sample query is

with pivot_data as (

                                  SELECT DEPTNO, JOB, SAL,MGR

                                  FROM emp

                                  )

SELECT *

FROM pivot_data

PIVOT (

SUM(SAL)

FOR DEPTNO

IN (&P90009000_LIST.)

)

this output is

JOB              MGR         10         20         30

--------- ---------- ---------- ---------- ----------

PRESIDENT                  5000

CLERK           7902                   800

CLERK           7698                              950

CLERK           7788                  1100

CLERK           7782       1300

SALESMAN        7698                             5600

MANAGER         7839       2450       2975       2850

ANALYST         7566                  6000

8 rows selected.

but I need the output like below

JOB               10         20         30        MGR

--------- ---------- ---------- ---------- ----------

PRESIDENT       5000             

CLERK                       800         7902

CLERK                                  950       7698

CLERK                      1100         7788

CLERK           1300         7782

SALESMAN                              5600       7698

MANAGER         2450       2975       2850       7839

ANALYST                    6000         7566

8 rows selected.

Here 10,20,30 columns are from pivot

How to do this in my query?

Thanks,

Su.gi

This post has been answered by Su.gi on Apr 17 2015
Jump to Answer

Comments

Anirban1

Hi,

Create a dummy session variable, put that session variable in a prompt as request variable, this will override the session variable you mentioned in the RPD. Now use that session variable to populate your different session variable.

Let me know if it resolves your issue.

Thanks

Anirban

anwickes

Thanks for the response Anirban.

I was thinking about the theory of this last night and don't think this will end up helping me anyway.

Correct me if i'm wrong.

Session variables are initialized when a user logs in.

This means that if I had 2 session variables set up (A & B), A being the dummy variable overridden by the request variable and B being something like "Dateadd(valueof(A),-1)", B would be initialized before A was overridden. This means I would still have to write a piece of code to overwrite each session variable anyway.

My main objective is to have 6 session variables. One holding the date prompted. 2-6 holding 1 month ago, 2 month ago, 3 month ago etc.

Is there an easier way? It seems like such an easy thing to do.

Cheers,

Adam

anwickes

Alright.... Think i was doing things the hard way.
For those people who are trying to do the same thing and find this thread, this is what I did.

In my time dimension, I created 5 extra columns and calculated the previous 5 months worth of dates.

Then in my main date prompt (That the user will see), I made it set a presentation variable (p_Var).

I then created another prompt with 5 "column variables". Each of the 5 prompts will use the new columns in the time dimension.

eg: prompt 1 = "Time Dim"."1 Month Ago", prompt 2 = "Time Dim"."2 Months Ago" etc

In the default selection for each new prompt, select "SQL RESULTS" and type something like:

1 Month Ago = SELECT "Time"."Month - 1 Month Ago" FROM "RPD_Name" WHERE "Time"."Month" = '@{p_Var}';

2 Months Ago = SELECT "Time"."Month - 2 Month Ago" FROM "RPD_Name" WHERE "Time"."Month" = '@{p_Var}';

etc


Each of the 5 prompts set new presentation variables. ie p_Var1, p_Var2, p_Var3 etc

I then dragged the new prompt onto the dashboard and set it to invisible by typing "display:none" in the Custom CSS Style of the section formatting options.

To update the column names to use the prompt values, we can now refer to the presentation values we have created by using the following in the column name:

@{dashboard.variables['p_Var1']}

Hope that has helped guys

I am certainly happy now that i've worked it out.

Christian Berg-0racle

anwickes wrote:

This means that if I had 2 session variables set up (A & B), A being the dummy variable overridden by the request variable and B being something like "Dateadd(valueof(A),-1)", B would be initialized before A was overridden. This means I would still have to write a piece of code to overwrite each session variable anyway.

Hmm no, since nothing prevents you from nesting variables which in the example state here would give:

B = "Dateadd(@{pvMyPresVar}{VALUEOF(NQ_SESSION.A)},-1)"

anwickes

But B would be initialised on session start which is before A is overridden by the prompt?

Christian Berg-0racle

Sorry, I meant literally use "Dateadd(@{pvMyPresVar}{VALUEOF(NQ_SESSION.A)},-1)" instead of B. Should have been "B => ..."

anwickes

i don't think you can use dateadd in a column name? Could be wrong though.

Christian Berg-0racle

Well TIMESTAMPADD(SQL_TSI_DAY...  , I just copied your formula for arguments sake.

anwickes

I will try this tomorrow but I didn't think you could do any manipulation of variables in a column name.

Understand your method would work in a column formula but not sure about column name.

1 - 9
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on May 15 2015
Added on Apr 16 2015
2 comments
285 views