1
votes

comment sélectionner la ligne avec le plus grand jour en SQL

Bonjour, j'ai cette requête dans la base de données:

114481  22/06/20        96

CO_GID   DIA           TRX

le problème est que je veux uniquement que la ligne soit renvoyée avec la plus récente date: dans ce cas, ce serait le 22/06/2020 et le groupe par m'empêche car je dois mettre le TRX_INI_FREQUENCY dans le groupe par

ce que je voulais obtenir serait:

114481  07/11/18       null 
114481  27/10/18        49
114481  22/06/20        96

select DISTINCT(CO_GID),
max(last_modified ) as DIA,
TRX_INI_FREQUENCY as TRX
from C_BSC_TRX ,UTP_COMMON_OBJECTS 
where (OBJ_GID = CO_GID)  
and (CO_GID LIKE '114481%')
GROUP BY CO_GID,TRX_INI_FREQUENCY



CO_GID   DIA           TRX

sql

0 commentaires

3 Réponses :


0
votes

Selon ce que vous utilisez, ajoutez SELECT TOP 1 et ORDER BY DIA DESC


0 commentaires

1
votes

Vous pouvez utiliser keep pour obtenir la dernière valeur de trx:

select CO_GID,
       max(last_modified) as DIA,
       max(TRX_INI_FREQUENCY) keep (dense_rank first order by last_modified desc) as TRX
from C_BSC_TRX JOIN
    UTP_COMMON_OBJECTS 
    on OBJ_GID = CO_GID and CO_GID LIKE '114481%'
group by CO_GID;

Notes:

  • Ne jamais utiliser de virgule dans la clause FROM .
  • Toujours utiliser la syntaxe JOIN appropriée, explicite, standard et lisible.
  • Qualifiez les noms de colonne! Il est assez difficile de savoir quelles colonnes proviennent de quelles tables.


0 commentaires

0
votes
select top 1 DISTINCT(CO_GID),
max(last_modified ) as DIA,
TRX_INI_FREQUENCY as TRX
from C_BSC_TRX ,UTP_COMMON_OBJECTS 
where (OBJ_GID = CO_GID)  
and (CO_GID LIKE '114481%')
GROUP BY CO_GID,TRX_INI_FREQUENCY
Order by DIA desc

0 commentaires