C# 如果oracle查询中的值重复,如何获取正确的值

C# 如果oracle查询中的值重复,如何获取正确的值,c#,sql,.net,oracle,C#,Sql,.net,Oracle,我有一个名为TestTable的表,其中包含以下数据 slno TESTNAME STATE 1. Rahul 100 2. Ravi 100 3. Rahul 90 4. sasi 100 5. Peter 100 6. Kiran 90 我的目标是,如果TESTNAME是重复的,那么我必须使用STATE=100的TESTNAME,所以这里是rahul100 预期结果如下 slno TES

我有一个名为TestTable的表,其中包含以下数据

slno   TESTNAME    STATE

1.  Rahul       100
2.  Ravi        100
3.  Rahul       90
4.  sasi        100
5.  Peter       100
6.  Kiran       90
我的目标是,如果TESTNAME是重复的,那么我必须使用STATE=100的TESTNAME,所以这里是rahul100

预期结果如下

slno   TESTNAME    STATE

1.  Rahul       100
2.  Ravi        100
4.  sasi        100
5.  Peter       100
6.  Kiran       90
我使用了下面的查询,但没有运气

select TESTNAME,STATE from TestTable order by slno,to_number(STATE).
我是否需要将所有的值都输入c中的datatable和Process中,或者我们可以在oracle查询中进行管理?

您是否正在根据我假设的状态查找组

这可以使用union all完成


为什么你希望拉胡尔返回100而不是90?为什么拉胡尔会有2个条目?他也想要slno。在这种情况下,您的查询不会返回预期结果result@Gaj:同意,我只尝试修改尝试选择TESTNAME,TestTable中的状态…如果它是单个值,则状态“90”也应出现。这些查询将返回该状态。
  select TestName,
         Max(State) as State
group by TestName
select slno,TESTNAME,STATE 
from TestTable 
where state=100
union all
select slno,TESTNAME,STATE 
from TestTable 
where state<>100
and not exists (select 1 
                from TestTable 
                where testname=t.testname and state=100
               ) 
select slno,testname,state
from (select t.*,row_number() over(partition by testname order by case when state=100 then 1 else 2 end) as rnum
      from tbl t
     ) t
where rnum=1