繁体   English   中英

SQL在一个查询中包含两个多行计数

[英]SQL two multi-row counts in one query

我有两个查询:

select m.name, count(distinct a.kursnr)
from trainer t
left outer join mitarbeiter m 
on t.svnr = m.svnr 
left outer join einzeltraining e 
on t.svnr = e.trainer
left outer join abhaltung a 
on t.svnr = a.trainer 
group by m.name, t.svnr;

select m.name, count(e.trainer)
from trainer t 
left outer join mitarbeiter m 
on t.svnr = m.svnr
left outer join einzeltraining e 
on e.trainer = t.svnr 
group by m.name, e.trainer;

第一个返回正确数量的课程(kursnr),第二个返回正确数量的培训师开设的各个课程(einzeltraining)。 但是,我无法创建一条SQL语句在一个表中显示两个值。 任何帮助,将不胜感激。 谢谢。

尽管可能有一种更有效的方法来执行此操作,但我想向您展示一种简单的方法来组合共享相同字段的任何两个查询,例如:

select coalesce(q2.name, q1.name) As Name, q1.KursnrCount, q2.TrainerCount
from 
(   --original first query
    select m.name, count(distinct a.kursnr) as KursnrCount
    from trainer t
    left outer join abhaltung a 
    on t.svnr = a.trainer 
    left outer join mitarbeiter m 
    on t.svnr = m.svnr 
    left outer join einzeltraining e on svnr = e.trainer
    group by m.name, t.svnr
) q1
full join 
(   --original second query
    select count(e.trainer) as TrainerCount, m.name
    from trainer t 
    left outer join einzeltraining e 
    on e.trainer = t.svnr 
    left outer join mitarbeiter m 
    on t.svnr = m.svnr
    group by e.trainer, m.name
) q2 on q2.name = q1.name

您还可以使用内部联接或左联接,而不是完全联接,具体取决于这些查询的名称字段如何匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM