J'essaie d'utiliser ROW_NUMBER OVER PARTITION
pour ROW_NUMBER OVER PARTITION
certaines valeurs à less que quelqu'un ne puisse suggérer un meilleur moyen, mes données ressemblent à ceci
create table Emp_Details ( Emp_Name varchar(10) , Company varchar(15) ,Qty int ,LineOrderCost money ,OrderUnitCost money ,ExtraCost money ,ExtraDesc varchar(5) ) insert into Emp_Details (Emp_Name, Company, Qty, LineOrderCost, OrderUnitCost, ExtraCost, ExtraDesc) values ('John', 'PStock', 1, '2.50','3.50', '7.50', 'ABC') ,('John', 'PStock', 1, '2.50','3.50', '7.50', 'DEF')
Ce que je veux faire est de returnner les deux loggings, mais mettre LineOrderCost
, OrderUnitCost
, ExtraCost
à 0 sur la deuxième ligne ou s'il y a plus de 2 lignes toutes les lignes suivantes après le premier, donc quand Emp_Name
, Company
et Qty
sont les mêmes mais l'ExtraDesc est différent de vider ces valeurs comme décrit.
Je m'excuse si je ne l'ai pas bien décrit mais dans ma tête ça a un sens 🙂
Merci P
Select EMP_NAME,COMPANY,QTY, EXTRADESC, Case when row>1 then 0 else ORDERUNITCOST end as ORDERUNITCOST, Case when row>1 then 0 else LINEORDERCOST end as LINEORDERCOST, Case when row>1 then 0 else EXTRACOST end as EXTRACOST from (Select Row_Number() Over(Partition By EMP_NAME order by EMP_NAME) as row,* from Emp_Details) t
Sql Fiddle Demo