Как принять правильное значение, если значения дублируются в запросе оракула - PullRequest
0 голосов
/ 04 июля 2018

У меня есть таблица с именем TestTable, которая содержит следующие данные

slno   TESTNAME    STATE

1.  Rahul       100
2.  Ravi        100
3.  Rahul       90
4.  sasi        100
5.  Peter       100
6.  Kiran       90

Моя цель - если дублируется TESTNAME, тогда мне нужно взять TESTNAME с STATE =100, поэтому здесь Rahul 100

Ожидаемый результат выглядит следующим образом

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).

Нужно ли мне принимать все значения в datatable и обрабатывать в c # или мы можем управлять в oracle query?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Это можно сделать с помощью union all.

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
               ) 

или использование row_number с пользовательским условием order by, приоритетное состояние = строка 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
0 голосов
/ 04 июля 2018

Вы ищете Group By (я полагаю, State означает number)?

  select TestName,
         Max(State) as State
group by TestName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...