Sql 行号和行号;隔断
我试图使用分区上的Sql 行号和行号;隔断,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图使用分区上的行数来清空某些值,除非有人能提出更好的方法,否则我的数据如下所示 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,
行数
来清空某些值,除非有人能提出更好的方法,否则我的数据如下所示
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
,OrderUnitCost
,ExtraCost
设置为0,或者如果只有两行以上,则在第一行之后所有后续行,因此当Emp\u Name
时,公司
和数量
是相同的,但ExtraDesc是不同的,按说明将这些值清空
如果我没有很好地描述这一点,我表示歉意,但在我的头脑中,这是有一定道理的:——)
谢谢,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
行号可以用来帮助实现这一点,但为什么不在演示层进行演示呢?您可以添加select的预期输出吗?您好,感谢您的回复,正如AmitSingh发布的那样,我成功地让它工作了,但很高兴看到我走的方向是正确的。我可以通过我的SSRS将其添加到表示层,这并不令人惊讶,因为这是其中一个,我认为这将是最好的方式。谢谢你的帮助!