请帮助如何将'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