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!

Is the following query possible with SQL Pivot?

odysamApr 24 2014 — edited Apr 24 2014

Let's say I have the following tables:

create table student(

  id number not null,

  name varchar2(80),

  primary key(id)

);

create table class(

  id number not null,

  subject varchar2(80),

  primary key(id)

);

create table class_meeting(

  id number not null,

  class_id number not null,

  meeting_sequence number,

  primary key(id),

  foreign key(class_id) references class(id)

);

create table meeting_attendance(

  id number not null,

  student_id number not null,

  meeting_id number not null,

  present number not null,

  primary key(id),

  foreign key(student_id) references student(id),

  foreign key(meeting_id) references class_meeting(id),

  constraint meeting_attendance_uq unique(student_id, meeting_id),

  constraint present_ck check(present in(0,1))

);

I want a query for each class, which has a column for the student name, one column for every class_meeting for this class and for every class meeting the cells would show the present attribute, which should be 1 if the student was present at that meeting and 0 if the student was absent in that meeting. Here is a table for reference

NameMeeting 1Meeting 2Meeting 3
John110
Mary101
Steve011

Is it possible to make an apex report like that? From googling I figured I must use Pivot, however I'm having a hard time understanding how it could be used here. Here is the query I have so far:

select * from(

  select s.name, m.present

  from student s, meeting_attendance m

  where s.id = m.student_id

)

pivot(

  present

  for class_meeting in ( select a.meeting_sequence

                         from class_meeting a, class b

                         where b.id = a.class_id )

)

However I'm sure it's way off. Is it even possible to do this with one query, or should I use pl sql htp and htf packages to create an html table?

Pretty inexperienced oracle developer here, so any help is very appreciated.

Comments

User_K2PC5
Answer

Looks like I was able to figure it out using the following connection string after digging deeper into one of the threads here.
User Id=proxy;Data Source=dbhostname:1521/DBSERVICENAME;Proxy User Id=userid; Proxy Password=userpassword;

Source of the answer was the following, as provided by Kristian Vinther on dba.stackexchange (I can't post links or I would just provide the hyperlink)

finally found out how to represent the proxy user login via my connection string.
Proxy User ID = MyUser
Proxy Password = MyUser password
User Id = SchemaName
User Password not set.

SELECT SYS_CONTEXT('USERENV', 'PROXY_USER'), SYS_CONTEXT('USERENV', 'SESSION_USER') FROM dual
Marked as Answer by User_K2PC5 · Nov 19 2020
Christian.Shay -Oracle

Hi,
Thanks for posting. It is no longer needed to use the workaround of using an ODP.NET Connection String to connect using a proxy user name and password like you show above..
As of version 19.3.3, we added a Show more options checkbox that will reveal the proxy username and password fields.
So, to connect using a proxy, in the connection dialog, check the Show more options checkbox and provide the proxy username and password in the fields that are revealed.

emanuele mattiolo

Hi and sorry, I couldn't log in with my proxy user. See screenshot of the sql developer configuration and that of VS. where am I wrong? Thank you

Documento1.pdf

Christian.Shay -Oracle

Looks like you have a new issue. Next time, please start a new thread instead of adding to an old one.

In your screenshot you are using brackets. With this VS Code extension you do not use brackets.

From the documentation:

In other tools, you may have connected using this format: proxyusername[username]/ [proxypassword]

With Oracle Developer Tools for VS Code, fill the connection dialog like so:

Username: Enter database username. ("/" (forward slash) is not allowed with proxy connections).

Password: Enter the database password. Leave blank for single-session proxy. Password is required for two-session proxy.

Show more options: Check this box

Proxy Username: The proxy username. (Other tools use the format proxyusername[username]/ [proxypassword]). Use "/" (forward slash) if using external authentication (i.e. OS/Kerberos/Certificate) or if using SEPS wallet for database username and password.

Proxy Password: The proxy password. (Other tools use the format proxyusername[username]/ [proxypassword]). Leave blank if Proxy Username field is "/" (forward slash) .

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

Post Details

Locked on May 22 2014
Added on Apr 24 2014
3 comments
1,747 views