Sql 如何使用重复但必要的元素简化表格?
我想知道每次服务的最后日期 我希望实现以下目标:Sql 如何使用重复但必要的元素简化表格?,sql,vba,ms-access,Sql,Vba,Ms Access,我想知道每次服务的最后日期 我希望实现以下目标: +-------------------+---------------------+------+------------+---------------+---------------+ | Vin | Concesionario_Crm | OTS | Fecha | Service | Concesionario | +-------------------+------------
+-------------------+---------------------+------+------------+---------------+---------------+
| Vin | Concesionario_Crm | OTS | Fecha | Service | Concesionario |
+-------------------+---------------------+------+------------+---------------+---------------+
| JAANLR55EE7102074 | AUTOCONSA UIO | 9 | 23/04/2019 | MANTENIMIENTO | AUTOCONSA UIO|
+-------------------+---------------------+------+------------+---------------+---------------+
| JAANLR55EE7102074 | AUTOCONSA UIO | 9 | 10/09/2018 | MECANICA | AUTOCONSA UIO|
+-------------------+---------------------+------+------------+---------------+---------------+
我尝试了这个,但它只是在所选服务具有最后日期时获取记录
Mantenimiento = "INSERT INTO SERVICIO SELECT DISTINCT t2.Mes_CRM, t2.Razón_social, t2.vin, t2.concesionario_crm, t1.ots, t1.fecha, t2.tipo_servicio, t2.concesionario FROM (SELECT max(t.Mes_CRM) AS Mes_CRM, t.vin, sum(t.ots) AS ots, max(t.fecha_salida) AS fecha FROM CASO AS t GROUP BY t.vin) AS t1 INNER JOIN CASO AS t2 ON (t1.Mes_CRM = t2.Mes_CRM) AND (t1.fecha = t2.fecha_salida) AND (t1.vin = t2.vin) WHERE (t2.tipo_servicio = 'MANTENIMIENTO')"
如果将日期存储为日期,而不是分散在两列中,这将更简单。但您可以通过子查询来实现这一点:
select t.*,
(select count(*)
from CASE1 as t3
where t3.vin = t.vin
) as cnt
from CASE1 as t
where not exists (select 1
from CASE1 as t2
where t2.vin = t.vin and
t2.fetcha_entrada > t.fetcha_entrada
);
not exists
通过表示没有其他年份/月份具有更大的该vin值来获取最近的年份/月份,您可以使用聚合子查询上的联接来解决此问题,例如:
select t2.vin, t2.concesionario_crm, t1.ots, t1.fecha, t2.concesionario
from
(
select t.vin, sum(t.ots) as ots, max(t.fecha_entrada) as fecha
from case1 t
group by t.vin
) t1
inner join case1 t2 on t1.vin = t2.vin and t1.fecha = f2.fecha_entrada
请不要破坏你的帖子。