0
votes

Comment sélectionner des enregistrements dans l'ordre dans lequel ils ont été insérés, puis les grouper par un type

J'ai une requête que je ne peux pas sembler aller au travail. J'ai une table comme celle-ci:

curesid, fk_thingtypeid, etc ... p>

et je souhaite sélectionner des enregistrements dans l'ordre dans lequel ils ont été insérés, mais les grouper par type. Donc, si les données se ressemblent à la table se trouve dans l'ordre suivant: p> xxx pré>

Je veux obtenir sélectionnez les enregistrements tels que ceci: p>

ThingID, FK_ThingTypeID
1        1
3        1
4        1
2        2


0 commentaires

3 Réponses :


0
votes

Votre requête semble simple, alors que quelqu'un sera capable d'aider. Gotta Love Stack Whideflow.

Je suis allé non sûr si c'est ce que vous êtes après? Toutes mes excuses sinon xxx


3 commentaires

Merci pour la réponse. J'ai besoin d'obtenir les archives dans l'ordre dans lequel ils ont été insérés dans la table, puis de les regrouper par ThinkTypeid. Malheureusement, les commander en premier de ThingTtypeid ne les obtiennent pas dans l'ordre dans lequel ils ont été insérés.


Sur la base de vos échantillons de données et de votre résultat requis, cette requête vous donnera le résultat requis. Si ce n'est pas ce que vous voulez, vous ne nous donnez pas la pleine exigence


@Squirrel L'exigence complète est que les enregistrements seront répertoriés dans l'ordre dans lequel ils ont été insérés, puis regroupés par la ThingType. Voir la solution finale que j'ai postée pour voir ce que je veux dire.



0
votes

Peut-être que cette requête est utile pour vous, conformément à ma compréhension:

select ROW_NUMBER() OVER(
   ORDER BY THINGID) AS RowNum, FK_ThingTypeID  from table 


3 commentaires

J'ai essayé d'utiliser cet exemple par I Obtenir l'erreur: la fonction "Row_Number" doit avoir une clause over. Quand j'ai regardé cela, tous les exemples utilisent Row_Number dans le Select Pas la commande par alors je ne suis pas vraiment sûr comment utiliser cela?


Je ne reçois aucune erreur dans l'exécution de la requête ci-dessus dans la base de données Oracle. Peut-être que cela ne prendra pas en charge une autre base de données, mais si vous utilisez Oracle DB, une erreur de type ne devrait pas être venue.


J'utilise MS SQL Server (par exemple, TSQL), j'aurais dû spécifier cela désolé.



0
votes

Merci pour ceux qui ont répondu. Voici la solution:

SELECT
    t.*
FROM
    Thing t
ORDER BY 
    (
        SELECT 
            min(ref.ThingID) 
        FROM Thing ref 
        WHERE
            ref.ThingTypeID = t.ThingTypeID 
    ),
    t.ThingID


0 commentaires