Esta mañana estuve revisando un poco la solicitud que monte acerca de la ultima compra de todos los clientes y tengo esto:
SELECT T2."CardCode", T2."CardName", T2."DocDate", T2."Phone1", T2."Phone2", T2."Cellular", T2."SlpCode", T2."E_Mail"
FROM (SELECT T0."CardCode", T0."CardName", T0."DocDate", T1."Phone1", T1."Phone2", T1."Cellular", T1."SlpCode", T1."E_Mail"
FROM OINV T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode"
WHERE T0."CardCode" LIKE '%%CL%%' OR T0."CardCode" LIKE '%%AV%%'
ORDER BY T0."DocDate" DESC
)T2
GROUP BY T2."CardCode", T2."CardName", T2."DocDate", T2."Phone1", T2."Phone2", T2."Cellular", T2."SlpCode", T2."E_Mail"
La idea es, mediante subconsulta, ordenar antes para que te devuelva primero los más recientes y hacer luego el GROUP BY, pues cortará dejando solo el primero según las agrupaciones pero no he logrado que funcione
Alguien que me pueda ayudar se lo agradeceria bastante
Si solo buscas que te arroje el mismo resultado, pero en orden por la fecha… Creo que solo tienes que sacar ese Order By y agregarlo al final de toda tu consulta, es decir despues del GROUP BY…
Con este código puedes obtener lo que estas tratando.
Para SAP HANA
select *
from (select A."CardCode" ,A."DocNum",A."DocDate",A."FolioNum", A."DocTotal", row_number() over (partition by A."CardCode" order by A."CardCode",A."DocEntry" desc) SEQNUM
from OINV A
) t
where t."SEQNUM" <= 1