Sql 如何在select语句(而不是where子句)中使用集合进行查询
我有两张桌子。父表父表与子表具有一对多关系。 父表Pa_Projects_all和子表Pa_Projects_players 它们由person\u id连接 假设我有一个项目,项目id=1001Sql 如何在select语句(而不是where子句)中使用集合进行查询,sql,oracle,Sql,Oracle,我有两张桌子。父表父表与子表具有一对多关系。 父表Pa_Projects_all和子表Pa_Projects_players 它们由person\u id连接 假设我有一个项目,项目id=1001 Project Id Project Name 1001 This is a project 项目参与者已经 查询应该有如下内容 Select Project_Id, Person_id, Name from Pa_projects_all a, Pa_project_pl
Project Id Project Name
1001 This is a project
项目参与者已经
查询应该有如下内容
Select Project_Id, Person_id, Name
from Pa_projects_all a, Pa_project_players b
where a.person_id = b.person_id
and a.project_id = 1001;
预期的结果是
Project Id Person Id Name
1001 500 John Smith
501 Peter Carpenter
502 Steve Sun
其中,personid和Name列是我认为应该是一个集合
查询将进入XML Publisher的数据定义中,结果将显示在Excel中
所以在Excel中,A列=项目Id,B列=人员Id,C列=姓名。
Excel中的一行用于显示结果。
换句话说,每个项目id一个Excel行
这可能吗?如果希望在SQL*Plus中包含此报告,则可以使用BREAK ON语句
SQL> break on Project_Id
SQL> Select Project_Id, Person_id, Name
2 from Pa_projects_all a, Pa_project_players b
3 where a.person_id = b.person_id
4 and a.project_id = 1001;
如果要将其放入任何工具中,则可以使用分析函数ROW_NUMBER,如下所示:
SELECT CASE WHEN RN = 1 THEN Project_Id END AS Project_Id, Person_id, Name FROM
(Select Project_Id, Person_id, Name,
ROW_NUMBER() OVER (PARTITION BY Project_Id ORDER BY Person_id) AS RN
from Pa_projects_all a, Pa_project_players b
where a.person_id = b.person_id
and a.project_id = 1001)
ORDER BY RN;