Hri*_*ari 1 mysql sql pivot case
我有一种情况需要根据内容创建列.
例如,这里是SQLFiddle - http://sqlfiddle.com/#!2/0ec7a/1.
我需要得到这样的结果:
--------------------------
| CITY | MALES | FEMALES |
--------------------------
| NY | 5 | 2 |
--------------------------
| DC | 2 | 1 |
--------------------------
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我正在查看MySQL手册中的CASE WHEN
陈述和IF
陈述,但更清楚的解释将非常有用.
你甚至不需要CASE
!
SELECT
city,
sum(gender = 'm') as males,
sum(gender = 'f') as females
FROM Population
group by city
Run Code Online (Sandbox Code Playgroud)
看到这在SQLFiddle中工作.
这个工作的原因是在mysql中,true
是1
和false
是0
,所以总结一个条件计算它是多少次真实!
对于(大多数?)其他数据库,您必须在总和中使用枯燥的案例:sum(case when gender = 'm' then 1 else 0 end)
等
这种类型的数据布局称为"枢轴".有些数据库,比如Oracle,通过对SQL风格的特定扩展本身支持它,但在mysql中你必须"自己动手".
归档时间: |
|
查看次数: |
393 次 |
最近记录: |