问题描述
- MYSQL 一个比较复杂的查询语句咨询
-
hi 我的表的结构大致是这样的
项目编号 预计成交日期 状态更新日期 项目状态
lead-1 2016-6-4 2016-3-1 跟踪
lead-1 2016-6-5 2016-3-2 谈判中
lead-1 2016-7-5 2016-3-3 审核中
lead-2 2016-3-5 2016-3-1 跟踪
lead-2 2016-4-9 2016-3-2 审核中
想得到的结果是这样的
3月 4月 5月 6月 7月
跟踪 0 0 0 0 0
谈判中 0 0 0 0 0
审核中 0 1 0 0 1
或者 想这样的结果
月份 状态 数量
3月 跟踪 0
3月 谈判中 0
3月 审核中 0
4月 跟踪 0
4月 谈判中 0
4月 审核中 1
5月 跟踪 0
5月 谈判中 0
5月 审核中 0
6月 跟踪 0
6月 谈判中 0
6月 审核中 0
7月 跟踪 0
7月 谈判中 0
7月 审核中 1就是我只统计每一个leadcode的最新状态的那一条数据,根据那一条数据的预计成交日和项目状态进行统计,统计的最终希望的结果如第二个表格或者第三个表格
这个东西,我主要是用来返回给前台给highchart画图用的。。我想把查询的结果json化之后,通过“data.项目状态.月份“或者“data.月份.项目状态”的形式来调用数据,可能做到吗?
非常感谢!或者有别的思路可以实现差不多内容的也可以,拜托各位大神了
解决方案
就一个“状态更新日期”,某一天leadcode有几条记录,不同的状态,怎么去判断哪一条是最新的呢?
解决方案二:
create table ta1(
项目编号 varchar(50),
预计成交日期 varchar(50),
状态更新日期 varchar(50),
项目状态 varchar(50)
);
create table monthtable(
monthnum varchar(2)
);
insert into ta1(项目编号,预计成交日期,状态更新日期,项目状态)
values('lead-1','2016-6-4','2016-3-1','跟踪');
insert into ta1(项目编号,预计成交日期,状态更新日期,项目状态)
values('lead-1','2016-6-5','2016-3-2','谈判中');
insert into ta1(项目编号,预计成交日期,状态更新日期,项目状态)
values('lead-1','2016-7-5','2016-3-3','审核中');
insert into ta1(项目编号,预计成交日期,状态更新日期,项目状态)
values('lead-2','2016-3-5','2016-3-1','跟踪');
insert into ta1(项目编号,预计成交日期,状态更新日期,项目状态)
values('lead-2','2016-4-9','2016-3-2','审核中');
insert into monthtable(monthnum) values('1');
insert into monthtable(monthnum) values('2');
insert into monthtable(monthnum) values('3');
insert into monthtable(monthnum) values('4');
insert into monthtable(monthnum) values('5');
insert into monthtable(monthnum) values('6');
insert into monthtable(monthnum) values('7');
insert into monthtable(monthnum) values('8');
insert into monthtable(monthnum) values('9');
insert into monthtable(monthnum) values('10');
insert into monthtable(monthnum) values('11');
insert into monthtable(monthnum) values('12');
SELECT b1.monthnum,b1.项目状态,ifnull(num,0) 数量 FROM (
SELECT * FROM (
select monthnum from monthtable,(
select max(mnum) mx,min(mnum) mm from (
SELECT MONTH(str_to_date(预计成交日期,'%Y-%m-%d')) mnum from ta1
) r
) m where monthnum>=mm and monthnum<=mx
) a1,
(
select distinct 项目状态 from ta1
) a2
) B1
left join (
select R.*,MONTH(str_to_date(预计成交日期,'%Y-%m-%d')) monthnum,1 num from (
SELECT @rownum1 rn ,@rownum1:=@rownum1+1,c.* from ta1 c,(select @rownum1:=1) r
) r,
(
select max(rn) rn1 from (
SELECT @rownum rn,@rownum:=@rownum+1,c.* from ta1 c,(select @rownum:=1) r
) t group by 项目编号
) k where r.rn = k.rn1
) B2 on B1.monthnum=B2.monthnum and B1.项目状态=B2.项目状态
order by B1.monthnum,B1.项目状态
时间: 2024-12-29 06:56:54