C# 如果oracle查询中的值重复,如何获取正确的值
我有一个名为TestTable的表,其中包含以下数据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
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