Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用重复但必要的元素简化表格?_Sql_Vba_Ms Access - Fatal编程技术网

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

请不要破坏你的帖子。