为客户变更带来价值

  • 本文关键字:客户 sql sql-server
  • 更新时间 :
  • 英文 :


请帮助如何将'On_Account'中的值仅在'Account'更改的第一行中。

当前结果:

Account On_Account
10001   831278.44
10001   831278.44
10001   831278.44
10001   831278.44
10001   831278.44
10005   10000
10005   10000
10005   10000
10005   10000
10007   343434
10007   343434
10007   343434
10007   343434
10007   343434
10007   343434
10007   343434
10007   343434

预期结果:

Account On_Account
10001   831278.44
10001   
10001   
10001   
10001   
10005   10000
10005   
10005   
10005   
10007   343434
10007   
10007   
10007   
10007   
10007   
10007   
10007   

感谢

您的数据

CREATE TABLE test(
Account    INTEGER  NOT NULL 
,On_Account NUMERIC(9,2) NOT NULL
);
INSERT INTO test
(Account,On_Account) VALUES 
(10001,831278.44),
(10001,831278.44),
(10001,831278.44),
(10001,831278.44),
(10001,831278.44),
(10005,10000),
(10005,10000),
(10005,10000),
(10005,10000),
(10007,343434),
(10007,343434),
(10007,343434),
(10007,343434),
(10007,343434),
(10007,343434),
(10007,343434),
(10007,343434);

使用Row_number区分第一个值,使用IIF函数使用Subquery过滤第一个值。

如果您想以null显示数据,请使用第一个IIF;如果您想以' '显示数据,请使用第二个IIF并注释第一个

select Account
,iif( rn=1,On_Account ,null) On_Account 
--,iif( rn=1,cast(On_Account as varchar(100)) ,'  ') On_Account 
from(
select Account,On_Account, Row_number()
OVER(   PARTITION BY Account
ORDER BY (SELECT NULL)) RN
from test) T

Dbfiddle

相关内容

  • 没有找到相关文章

最新更新