2013-05-08 2 views
1

Я пытаюсь использовать ROW_NUMBER OVER PARTITION к пустым из определенных значений, если кто-то может предложить лучший способ, мои данные выглядит что-то вроде этогоROW_NUMBER & PARTITION

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') 

То, что я хочу сделать, это вернуть обе записи, но установить LineOrderCost, , ,,,, 0, на второй строке или если имеется только две строки, следующие строки после первого, поэтому, когда Emp_Name, Company и Qty являются такими же, но ExtraDesc отличается от этих значений, как описано.

I извинения, если я не описал это хорошо, но в моей голове это делает какой-то смысл :-)

Благодаря P

+1

'ROW_NUMBER' могут быть использованы чтобы помочь достичь этого, но почему бы вам не сделать презентацию на уровне презентации? –

+0

Можете ли вы добавить ожидаемый результат выбора? –

ответ

2
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

+0

Привет, Спасибо за ответы и, как сказал AmitSingh, мне удалось заставить его работать, но приятно видеть, что я собираюсь в правильном направлении. Я мог бы добавить его на уровень презентации моей SSRS, это не удивительно, и, поскольку это был один из, я думал, что это будет лучший способ. Спасибо за помощь! – PJD

Смежные вопросы