我如何使用 CTE?

How can I use CTE?

希望有人能帮助我。我正在尝试让列 stadt、größtes、mittleres 和 kleines 为城市 München 和 Stuttgart 显示,但我正在水平显示所有列。慕尼黑和斯图加特应该在不同的两行。内部连接、左连接似乎不起作用,因此我只是将显示结果列为 select * from cte, cte1。我怎样才能得到我想要的正确显示?

with cte as
(
select  left(ab.stadt,3) as stadt, avg(gehalt) as mittleres, max(gehalt) as größtes, min(gehalt) as kleinstes
from gehalt g
inner join mitarbeiter m
on m.m_nr=g.m_nr
inner join abteilung ab
on ab.abt_nr=m.abt_nr
where stadt ='Stuttgart'
group by stadt
),
cte1 as
(
select  left(ab.stadt,3) as stadt, avg(gehalt) as mittleres, max(gehalt) as größtes, min(gehalt) as kleinstes
from gehalt g
inner join mitarbeiter m
on m.m_nr=g.m_nr
inner join abteilung ab
on ab.abt_nr=m.abt_nr
where stadt ='München'
group by stadt
)
select * from cte, cte1


这是一个简单的查询,可以满足您的要求。

select  left(ab.stadt,3) as stadt, avg(gehalt) as mittleres, max(gehalt) as größtes, min(gehalt) as kleinstes
from gehalt g
inner join mitarbeiter m
on m.m_nr=g.m_nr
inner join abteilung ab
on ab.abt_nr=m.abt_nr
where stadt in ('Stuttgart','München')
group by stadt

如果你必须有 CTE,你可以尝试这样的事情

with cte as 
(select  left(ab.stadt,3) as stadt, avg(gehalt) as mittleres, max(gehalt) as größtes, min(gehalt) as kleinstes
from gehalt g
inner join mitarbeiter m
on m.m_nr=g.m_nr
inner join abteilung ab
on ab.abt_nr=m.abt_nr
group by stadt
)
select * from cte where stadt in ('Stuttgart','München')

虽然我会推荐前一个查询,但没有理由拥有 CTE。