如何在SQLite中使用此SQL查询创建正确的枢轴表
我已经想解决了这张硬式SQL枢轴表。我找不到解决方案。
with cte as (
select nationality, class as n
from Fifaklasse
group by nationality
)
select nationality,
coalesce(sum(case when n = 'Wereldklasse' then n end), 0) as 'Wereldklasse',
coalesce(sum(case when n = 'Topklasse' then n end), 0) as 'Topklasse',
coalesce(sum(case when n = 'Subtop' then n end), 0) as 'Subtop'
from cte
group by nationality
player | nationality | Class |
---|---|---|
Messi | n1 | World_class |
Aguero | n1 | World_class |
Vidal | n2 | Top_class |
Pinto | n3 | Subtop_class |
Ronaldo | n3 | World_class |
Suarez | n4 | World_class |
Falcao | n4 | Top_class |
RESULT
Nationality | World_class | Top_class | Subtop_class |
---|---|---|---|
n1 | 2 | 0 | 0 |
n2 | 0 | 1 | 0 |
n3 | 1 | 0 | 1 |
n4 | 1 | 1 | 0 |
I've this hard SQL pivot table I'm trying to solve. I can't find the solution for it.
with cte as (
select nationality, class as n
from Fifaklasse
group by nationality
)
select nationality,
coalesce(sum(case when n = 'Wereldklasse' then n end), 0) as 'Wereldklasse',
coalesce(sum(case when n = 'Topklasse' then n end), 0) as 'Topklasse',
coalesce(sum(case when n = 'Subtop' then n end), 0) as 'Subtop'
from cte
group by nationality
player | nationality | Class |
---|---|---|
Messi | n1 | World_class |
Aguero | n1 | World_class |
Vidal | n2 | Top_class |
Pinto | n3 | Subtop_class |
Ronaldo | n3 | World_class |
Suarez | n4 | World_class |
Falcao | n4 | Top_class |
RESULT
Nationality | World_class | Top_class | Subtop_class |
---|---|---|---|
n1 | 2 | 0 | 0 |
n2 | 0 | 1 | 0 |
n3 | 1 | 0 | 1 |
n4 | 1 | 1 | 0 |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该将值1求和以获取计数。除此之外,我将使用此版本和布尔表达式:
You should be summing the value 1 to obtain the counts. That aside, I would use this version with boolean expressions:
蒂姆是正确的。但是,为了使其更易于理解并在大多数其他数据库引擎中工作,应将其重写为
Tim is correct. But to make it more understandable and work for most other database engines, this should be rewritten as