【发布时间】:2019-08-26 08:05:01
【问题描述】:
我对内部和外部培训有疑问。每次培训都有 1 个或多个演讲者。我想要的是为每个演讲者提供一个专栏。
我正在检查聚合函数,但找不到解决我问题的函数。
select e.sid
, e.access_kz EXTERN1
, z.zuname VERTRETERPERSONAL1
from MDEV e
join MDEVCAL ec on (ec.klient_id = e.klient_id and ec.EV_sid = e.sid)
left outer join MDEVCALS ecs on (ecs.klient_id = e.klient_id and ecs.ev_sid = e.sid and ecs.evcal_sid = ec.sid)
left outer join MDZHD z on (z.klient_id = e.klient_id and z.sid = ecs.MDZHD_SID)
我使用左外连接,因为训练不一定要有演讲者,但可以有 X 个不同的演讲者
我想要的是这样的:
SID | Extern1 | VERTRETERPERSONAL1 | VERTRETERPERSONAL2 | VERTRETERPERSONAL3 ...
【问题讨论】:
-
那么你想要代表每个训练者对训练的列数吗?动态列数?
-
是的,结果应该是这样。
-
单个查询不会为您提供这样的结果,因为 SQL 引擎在执行查询之前必须知道许多列。如果您愿意使用 PL/SQL,我们可以提供帮助。
-
我的问题是在这种情况下我不能使用 PL SQL。 (它是一个报表查询,不支持 PL SQL)。如果为查询提供静态数量的培训师是可能的吗?例如,如果我说我只想要前两名培训师?
-
是的,可以使用静态训练器