Bry*_*ynJ 2 mysql sql grouping group-by dataset
我不认为这是可能的,但我想以其他方式证明这一点.
我编写了一个简单的报告查看类来输出各种数据库查询的结果.为了改善显示效果,当我有一个包含分组数据的报表时,我想在每个唯一值的第一行显示字段值 - 我想在查询级别执行此操作,否则它会在我的班级中需要额外的逻辑来确定这些特殊值.
用一个简单的例子说明我的要求可能会有所帮助.想象一下这个数据集:
Year Quarter Total
2008 Q1 20
2008 Q2 25
2008 Q3 35
2008 Q4 40
2009 Q1 15
2009 Q2 20
2009 Q3 30
2009 Q4 35
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我希望将数据集返回为:
Year Quarter Total
2008 Q1 20
Q2 25
Q3 35
Q4 40
2009 Q1 15
Q2 20
Q3 30
Q4 35
Run Code Online (Sandbox Code Playgroud)
有没有办法在MySQL中以编程方式执行此操作?
SELECT CASE WHEN @r = year THEN NULL ELSE year END AS year,
quarter,
total,
@r := year
FROM (
SELECT @r := 0
) vars,
mytable
ORDER BY
year
Run Code Online (Sandbox Code Playgroud)
@r这是一个会话变量.您可以MySQL像任何过程语言中的任何变量一样使用它们.
首先,它在子查询中初始化为零.
其次,它在SELECT条款中进行了检查.如果当前值@r不等于year,则year输出,否则NULL输出.
第三,它用当前值更新year.
| 归档时间: |
|
| 查看次数: |
3400 次 |
| 最近记录: |