我正在尝试使用以下方式获得5个客户的最新订单时间:
SET SESSION group_concat_max_len = 99;
select o.customer_id, substring_index(m.orders,',', 1) as order1,
(case when numc >=2 then substring_index(substring_index(m.orders, ',', 2), ',', -1)end) as order2,
(case when numc >=3 then substring_index(substring_index(m.orders, ',', 3), ',', -1)end) as order3,
(case when numc >=4 then substring_index(substring_index(m.orders, ',', 4), ',', -1)end) as order4,
(case when numc >=5 then substring_index(substring_index(m.orders, ',', 5), ',', -1)end) as order5
from orders o,
(select group_concat(date order by date desc) as orders, count(*) as numc
FROM orders) m
where country_id='27'
group by customer_id
但它正在为所有客户返回sysdate。
我在哪里做错了?
答案 0 :(得分:0)
我不确定“sysdate for all customers”是什么意思。但是,join
并没有达到预期效果。
只需进行一次聚合:
select o.customer_id, substring_index(group_concat(date order by date desc),',', 1) as order1,
(case when count(*) >=2 then substring_index(substring_index(group_concat(date order by date desc), ',', 2), ',', -1)end) as order2,
(case when count(*) >=3 then substring_index(substring_index(group_concat(date order by date desc), ',', -1)end) as order3,
(case when count(*) >=4 then substring_index(substring_index(group_concat(date order by date desc), ',', 4), ',', -1)end) as order4,
(case when count(*) >=5 then substring_index(substring_index(group_concat(date order by date desc), ',', 5), ',', -1)end) as order5
from orders o
where country_id='27'
group by customer_id