mysql - 如何将以下数据表转换为另一种结构

标签 mysql sql group-by max min

我有以下数据表:

year, month,  customer, agent 
2013,  1,     abc,      yyyy 
2013,  2,     abc,      yyyy 
2013,  3,     abc,      zzzz 
2013,  4,     abc,      xxxx 
... 
2013,  12,    abc,      xxxx

我需要将该表转换为类似的结构

year, from, to, customer, agent
2013, 1,    2   abc,      yyyy
2013, 3,    3   abc,      zzzz
2013, 4,    12  abc,      xxxx

所以我尝试使用 MAX 和 MIN 函数来识别客户和代理的最小和最大月份..但它不起作用。

你能帮我吗? 谢谢

最佳答案

试试这个:

SELECT A.year, 
       MIN(A.month) `from`,
       MAX(A.month) `to`, 
       A.customer, 
       A.agent
FROM tableA A
GROUP BY A.year,
         A.customer, 
         A.agent

检查SQL FIDDLE DEMO

输出

| YEAR | FROM | TO | CUSTOMER | AGENT |
|------|------|----|----------|-------|
| 2013 |    4 | 12 |      abc |  xxxx |
| 2013 |    1 |  2 |      abc |  yyyy |
| 2013 |    3 |  3 |      abc |  zzzz |

关于mysql - 如何将以下数据表转换为另一种结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21017109/

相关文章:

c# - MySQL asp.net 字符集不能正常工作

php - 未翻译的单引号

mysql - 如何获取一组按字段排序的数据,但空值应该稍后出现并按不同的条件排序?

sql - 复杂的 TSQL order by 子句

mysql - SQL QUERY-在 GROUP BY 中使用时,多个 COUNT 返回错误(相同)的结果

mysql - 如何在Prisma中添加时间属性?

mysql - DATE_ADD 在生产服务器上返回 NULL,在开发中工作

sql - Django 中的第一个查询总是很慢

mysql - 按字段中的子字符串分组

带有 group by 和 having 子句的 Mysql 查询