sql - 选择第一个值等于1,重复值为0。

问题描述 投票:0回答:2

我想让第一个值等于1,而重复的值为0

select
Client_ID,
(case
    when 1= row_number() over (partition by Client_id order by client_id)
    then 1
    else 0
end) as FLAG
FROM    Table

基本概念。

client id   flag
123           1 
123           0
178           1
178           0
178           0
178           0
178           0
389           1
233           1

但它一直显示错误 "没有更多的线轴空间",有什么其他办法吗?谢谢你的帮助。

sql
2个回答
0
投票

如果看起来你的查询执行效率很低。你可能需要把索引放在ClientId上。

但首先我建议你更新表的统计,然后再试一次。


-1
投票
    

-- Data preparation for testing
Select 123 as client_id into #table  Union All 
Select 123 Union All
Select 178 Union All
Select 178 Union All
Select 178 Union All
Select 178 Union All
Select 178 Union All
Select 389 Union All
Select 233

-- the required query
select client_id, 
    Case When row_number() over (partition by Client_id order by client_id) = 1 
    then 1 else 0 End as Flag 
from #table       

© www.soinside.com 2019 - 2024. All rights reserved.