0
votes

Sélectionnez toutes les lignes sauf la dernière

J'ai une requête SELECT où j'ai rownumber () fonction, j'ai donc un numéro de ligne par une partition dans le résultat.

Qu'est-ce que je veux réaliser? Je veux mettre à jour tous les numéros de rangée de chaque partition, à l'exception de la dernière ligne de chaque partition. Alors supposons que nous ayons rownumber 1,2,3,4 et une autre partition avec 1,2 Je veux faire une clause de mise à jour pour mettre à jour tous les numéros de ligne, à l'exception du numéro 4 (première partition) et exclure le numéro de ligne 2 de la deuxième partition.

Je sais que nous pouvons exclure un numéro de premier rang à l'aide d'une condition simple dans la clause Where Like ROWNOMBER! = 1 mais dans ce cas, je veux le dernier numéro de la ligne de chaque partition et ce numéro est différent toutes partitions.

Comment puis-je y parvenir? Cordialement


1 commentaires

C'était dans la solution à votre Question précédente .


5 Réponses :


1
votes

Vous pouvez utiliser une CTE actualisable, mais inverser la direction de la commande par dans Row_Number () : xxx


0 commentaires

0
votes

Puisque vous n'avez fourni aucun SQL. Selon votre question, je peux penser à mettre votre résultat dans une sous-requête et à utiliser le max de rive-numérique. Ou mieux fournir des données SQL et des échantillons pour une meilleure clarté.


0 commentaires

0
votes

Vous pouvez simplement modifier la clause par de ASC à Desc ou Desc à ASC selon l'exigence et vous pouvez continuer à mettre à jour comme xxx


0 commentaires

0
votes

Cela fonctionnerait aussi:

  with temptbl as (
     select *,max(rn) over (partition by id order by somethingelse) rnmax from dbo.yourtable
     )
update temptbl
    set [whatever you plan on updating]
    where rn=rnmax;


0 commentaires

0
votes

Autant d'autres suggérons, tournez la commande sur sa tête le rendrait beaucoup plus simple que la ligne 1 serait la ligne que vous ne voulez pas mettre à jour.

Assurez-vous d'utiliser P>

....
,row_number() over(partition by TEMP1 order by TEMP2 desc[or asc])
....

where rn <> 1


0 commentaires