0
votes

Comment récupérer le dernier enregistrement de chaque groupe avec DB2?

Quant à MySQL, je sais que la rétrécie du dernier enregistrement de chaque groupe, telle que: xxx pré>

mais DB2 est un peu différent, vous ne pouvez sélectionner que la colonne utilisée après groupe par strong>, comme ceci: p> xxx pré>

donc, si je veux chercher deux colonnes, j'ai besoin de grouper par eux comme ceci: P >

SELECT A.column01, A.column02 
FROM (
  SELECT * 
  FROM devops.clearquest_clearquest 
  ORDER BY 'created_at' DESC
) AS A 
GROUP BY A.column01, A.column02;


2 commentaires

Le fait que votre requête MySQL "fonctionne" est une coïncidence pure - elle est invalide SQL et au lieu de le rejeter, MySQL renvoie simplement un résultat aléatoire.


Pourquoi triez-vous par une valeur de chaîne constante?


4 Réponses :


1
votes

C'est une tâche classique par groupe et j'utiliserais une solution standard telle que xxx

ou les fonctions de fenêtre xxx

s'il vous plaît Notez que le comportement de MySQL n'est pas «standard». La plupart des systèmes de base de données ne permettent pas d'inclure des colonnes derrière Sélectionner si elles ne font pas partie du groupe Groupe par ou une fonction d'agrégation. Si vous définissez sql_mode de mysql sur ANSI < / a> alors votre requête ne passera pas.


0 commentaires

1
votes

dans db2 Vous pouvez le faire pour obtenir la ligne avec la date la plus élevée créée_at dans chaque groupe colonne01, colonne02 .

wwell, strictement parlant que ce serait < EM> L'une des lignes qui a le plus haut créé_at dans chaque groupe. row_number () est non déterministe si créé_at, colonne01, colonne02 n'est pas unique xxx

Notez que les noms de colonne ont besoin être entouré de citations doubles (et pas de guillemets simples) si elles ne sont pas majuscules dans la table de la table


0 commentaires

1
votes

Ce n'est pas approprié SQL:

select cc.*
from devops.clearquest_clearquest cc
where cc.created_at = (select max(cc2.created_at)
                       from devops.clearquest_clearquest cc2
                       where cc2.submitter = cc.submitter
                      );


0 commentaires

1
votes

Vous pouvez interroger la table et rejoindre-le à lui-même pour obtenir la date maximale (ou tout ce que vous souhaitez grouper par / trouver

par exemple, xxx


0 commentaires