任何人都可以帮我解决MySql数据库查询问题:
我有一张包含以下数据的表:
work_date ticket no category
------------------------------------
7/15/2013 111 a
7/15/2013 222 b
7/15/2013 333 c
7/16/2013 111 a
7/16/2013 555 e
7/16/2013 333 f
7/17/2013 111 H
我需要帮助编写一个查询,该查询将读取所有表数据,然后创建2列一个票据号,第二个作为类别。在故障单列下,它将显示所有不同故障单编号的计数,类别下的值应该是分配给该故障单的最后一个类别。
我正在使用以下查询
SELECT category, count(distinct(ticket_no))
FROM master
group by category
order by 2 DESC`
出现在2个或更多类别中的票据被多次计算,我希望它只计算一次,而且也是最新的一次
预期结果:
Ticket No Category
--------------------
111 H
222 b
333 f
555 e
答案 0 :(得分:0)
我没有收到您的示例查询。它按category
分组,而不是ticket
,但样本数据是ticket
。
无论如何,我认为这可以做你想要的:
select ticket,
substring_index(group_concat(category order by work_date desc), ',', 1)
from master m
group by ticket;
答案 1 :(得分:0)
您可以使用以下SQL查询:
SELECT DISTINCT(ticket_no), category FROM table_name SORT BY DESC;
答案 2 :(得分:0)
select * from
(select ticket_no,category from master order by work_date desc) abc
group by ticket_no;
<强> fiddle 强>
答案 3 :(得分:-1)
SELECT *
FROM distinct t1
WHERE NOT EXISTS (
SELECT *
FROM distinct t2
WHERE t2.ticket_no= t1.ticket_no
AND t2.work_date > t1.work_date
);
这里work_date应该是格式化的时间戳