0
votes

Comment avoir une requête SQL Sélectionner de telle sorte que certaines colonnes soient laissées en blanc lors des lignes suivantes lorsque de clos de cette ligne ont une valeur en double de la ligne ci-dessus?

J'ai une table comme celle-ci. XXX PRE>

REMARQUE: Les données sont déjà en ordre triés P>

Le résultat dont j'ai besoin: P>

 Name|  Id |  cost
  ----------------
  A  |  1  |  1000
  ----------------
     |     |  2000
  ----------------
  B  |  2  |  3000
  ----------------
     |     |  4000


4 commentaires

Vont afficher le résultat quelque part?


cas lors de la clause sur le numéro de rangée sur la fenêtre sur le nom


déjà dans la commande triée ... est l'ordre de tri de la colonne coût ? Parce que, sinon, l'ordre que vous percevez n'est même pas vraiment là.


C'est un travail le mieux fait dans la couche de présentation plutôt que dans T-SQL.


3 Réponses :


0
votes

Vous pouvez utiliser row_number () : xxx

ceci suppose que vous voulez (nom, id) tuples commandé par Coût (comme indiqué dans votre exemple de données). Si vous souhaitez utiliser une autre colonne de commande, vous pouvez modifier la clause par des fonctions de la fenêtre.


2 commentaires

Comment savez-vous que coût fournit la commande que l'OP veut ici?


@TimbieGeleisen: Je commençais à ce sujet. Cela semble simplement être ce que OP veut (il correspond à leurs données d'échantillon) - bien sûr, une autre colonne peut être utilisée.



0
votes

pouvons-nous faire xxx


0 commentaires

0
votes

Je ne recommande pas de faire cela comme une requête de base de données. Le jeu de résultats contiendra des lignes qui n'ont pas de sens, à moins que vous ne voyiez les lignes au-dessus d'eux - et ce n'est pas la voie SQL.

Je suggérerais de la première agrégation et de mettre les coûts en une seule ligne: P>

select (case when seqnum = 1 then name end) as name,
       (case when seqnum = 1 then id end) as id,
       cost
from (select t.*, row_number() over (partition by name, id order by cost) as seqnum
      from t
     ) t
order by name, id, seqnum


0 commentaires