Mysql SQL查询(如果可能)

Mysql SQL查询(如果可能),mysql,sql,Mysql,Sql,我有一张像这样的桌子 +------------------------+ | DATE | INT | +------------------------+ | [DATE] | [TICKETS] | | ---------- | ----------| | 01/01/2016 | 100 | | 01/02/2016 | 10 | | 01/03/2016 | 30 | | 02/15/201

我有一张像这样的桌子

+------------------------+ | DATE | INT | +------------------------+ | [DATE] | [TICKETS] | | ---------- | ----------| | 01/01/2016 | 100 | | 01/02/2016 | 10 | | 01/03/2016 | 30 | | 02/15/2016 | 28 | | 02/29/2016 | 80 | | 01/01/2017 | 25 | | 01/02/2017 | 120 | | 01/03/2017 | 60 | | 02/15/2017 | 72 | | 02/28/2017 | 12 | ------------------------ +------------------------+ |日期| INT | +------------------------+ |[日期]|[门票]| | ---------- | ----------| | 01/01/2016 | 100 | | 01/02/2016 | 10 | | 01/03/2016 | 30 | | 02/15/2016 | 28 | | 02/29/2016 | 80 | | 01/01/2017 | 25 | | 01/02/2017 | 120 | | 01/03/2017 | 60 | | 02/15/2017 | 72 | | 02/28/2017 | 12 | ------------------------ 我希望(选择)查询(如果可能)具有以下内容

--------------------------------------------- | [DATE] | [TICKETS2016] | [TICKETS2017] | _| ---------- | -------------- | ------------- | highest / | 01/01/2017 | 100 | 25 | year for the / | 01/02/2017 | 10 | 120 | common days. \ | 01/03/2017 | 30 | 60 | \_| 02/15/2017 | 28 | 72 | Exists only at 2017>| 02/28/2017 | NULL | 12 | Exists only at 2016>| 02/29/2016 | 80 | NULL | --------------------------------------------- --------------------------------------------- |【日期】|【票务2016】|【票务2017】| _| ---------- | -------------- | ------------- | 最高/2017年1月1日| 100 | 25 | 2017年2月1日10日120日 普通的日子01/03/2017 | 30 | 60 | \_| 02/15/2017 | 28 | 72 | 仅存在于2017年2月28日|空| 12 | 仅存在于2016年2月29日| 80 |空| --------------------------------------------- 因为我是SQL的新手,所以我想寻求您的帮助


非常感谢您抽出时间。

您可以使用条件聚合来完成此操作:

select format(date, '%m-%d') as mmdd,
       sum(case when year(date) = 2016 then tickets end) as tickets_2016,
       sum(case when year(date) = 2017 then tickets end) as tickets_2017
from t
group by format(date, '%m-%d');

您可以使用条件聚合执行此操作:

select format(date, '%m-%d') as mmdd,
       sum(case when year(date) = 2016 then tickets end) as tickets_2016,
       sum(case when year(date) = 2017 then tickets end) as tickets_2017
from t
group by format(date, '%m-%d');

最后这就是我想要的。谢谢大家的帮助

select date(max(date)) as mmdd,
       sum(case when year(date) = 2016 then tickets end) as tickets_2016,
       sum(case when year(date) = 2017 then tickets end) as tickets_2017
from t
group by date_format(date, '%m-%d');

最后这就是我想要的。谢谢大家的帮助

select date(max(date)) as mmdd,
       sum(case when year(date) = 2016 then tickets end) as tickets_2016,
       sum(case when year(date) = 2017 then tickets end) as tickets_2017
from t
group by date_format(date, '%m-%d');

您可以使用
pivot
groupby
您可以使用
pivot
groupby
不幸的是,这不会返回我期望的上述表格的结果。不幸的是,这不会返回我期望的上述表格的结果。