0
votes

Comment affirmez-vous que la ligne actuelle de la fenêtre est la dernière ligne?

Si j'ai une requête avec un Row_Number () sur Comment puis-je obtenir une sortie pour totale des lignes dans cette fenêtre ou, la dernière ligne en tant que booléen?

J'aimerais Créez deux colonnes dans les résultats avec un booléen pour les première et les dernières lignes de la fenêtre. xxx


0 commentaires

3 Réponses :


1
votes

Cela vous donne le nombre total:

ROW_NUMBER() OVER (.... ORDER BY ... DESC)


0 commentaires

1
votes

Vous pouvez utiliser first_value code>: xxx pré>

DB FIDDLE Demo strong> P>

Sortie: P>

+----+----------+------------+----------+
| a  | row_num  | first_row  | last_row |
+----+----------+------------+----------+
| 1  |       1  |         1  |        1 |
| 2  |       1  |         1  |        0 |
| 2  |       2  |         0  |        1 |
| 3  |       1  |         1  |        1 |
+----+----------+------------+----------+


1 commentaires

Excellent merci. Comme l'utilisation de first_value .



1
votes

Je ferais:

select 
  a,
  row_number,
  case ra = 1 then 1 else 0 end as first,
  case rd = 1 then 1 else 0 end as last
from (
  select
    a,
    row_number,
    row_number() over(partition by a order by row_number) as ra,
    row_number() over(partition by a order by row_number desc) as rd
  from my_table
) x
order by a


1 commentaires

Semble si évident quand vous le mettez comme ça! Acclamations.