簡體   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