Supposé que j'ai le tableau suivant. Comment afficher 'montant' une seule fois en fonction de l' ID
colonne?
ID Amount 1 10.00 1 10.00 1 10.00 2 10.00 2 10.00 2 10.00
Étant donné l'exemple ff, la sortie attendue devrait être la suivante:
ID Amount 1 10.00 1 0.00 1 0.00 2 10.00 2 0.00 2 0.00
J'ai essayé d'utiliser ROW_NUMBER
mais ce n'est pas suffisant, c'est en me donnant ce résultat.
ID Amount 1 10.00 1 0.00 1 0.00 2 0.00 2 0.00 2 0.00
EDIT: C'est ce que j'ai essayé jusqu'à présent:
SELECT ID ,CASE WHEN ROW_NUMBER() OVER(PARTITION BY Amount ORDER BY ID) = 1 THEN Amount ELSE 0.00 END [AMOUNT] FROM TABLE
Changez simplement votre partition pour utiliser l'identifiant:
SELECT ID ,CASE WHEN ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) = 1 THEN Amount ELSE 0.00 END [AMOUNT] FROM TABLE Order by ID, Amount Desc
Cela devrait le faire:
select id, iif(id=lag(id,1,0), 0, amount) from mytable order by id
En fait, si l'identifiant courant est le même que l'identifiant d'une ligne, utilisez 0. Dans le cas contraire, utilisez la colonne montant.
Je suppose, à partir des données que vous avez fournies, que le «montant» rest le même pour tout identifiant unique.