我在mySQL db上有一个这样的表:
Olimpiade Sport Disciplina Categoria
---------------------------------------------------
London 2012 Athletics 100m men
London 2012 Athletics 100m woman
Beijing 2008 Athletics 200m men
Beijing 2008 Athletics 200m women
Athens 2004 Athletics 800m men
Athens 2004 Athletics 800m women诸若此类。我不知道是否可以设置这样的查询,但我希望得到的结果如下:
Disciplina Categoria London 2012 Beijing 2008 Athens 2004
------------------------------------------------------------------
100m men yes no yes
100m women yes yes no
200m men yes no yes
200m women yes yes no
800m men yes yes yes
800m women yes yes yes那就是奥运会版本的试验是否存在。
发布于 2016-02-07 20:14:18
是的,你可以,像这样用例,
Select Disciplina, Categoria,
CASE when Olimpiade = 'London 2012' then 'yes' else 'no' end as 'London 2012',
CASE when Olimpiade = 'Beijing 2008' then 'yes' else 'no' end as 'Biejing 2008',
CASE when Olimpiade = 'Athens 2004' then 'yes' else 'no' end as 'Athens 2004' from tableName group by Disciplina, Categoria order by Disciplina, Categoria发布于 2016-02-07 21:27:14
您可以使用内部select构建查询。内部select通过添加列来准备数据。外部select将数据分组:
SELECT
Disciplina,
Categoria,
IF (MAX(`London 2012`) > 0, 'yes', 'no') AS 'London 2012',
IF (MAX(`Beijing 2008`) > 0, 'yes', 'no') AS 'Beijing 2008',
IF (MAX(`Athens 2004`) > 0, 'yes', 'no') AS 'Athens 2004'
FROM
(
SELECT
Disciplina,
Categoria,
IF (Olimpiade = 'London 2012', 1, 0) AS 'London 2012',
IF (Olimpiade = 'Beijing 2008', 1, 0) AS 'Beijing 2008',
IF (Olimpiade = 'Athens 2004', 1, 0) AS 'Athens 2004'
FROM YourTableName
) AS Games
GROUP BY Disciplina, Categoria
ORDER BY Disciplina, Categoria您必须将YourTableName替换为您的表名。
https://stackoverflow.com/questions/35253222
复制相似问题