Oracle 基于案例查询中的计数返回值

Oracle 基于案例查询中的计数返回值,oracle,select,count,case,Oracle,Select,Count,Case,我期待着你对这个请求的意见,它似乎非常简单,但我无法独自解决 如果表列part_status有一个值,则返回该值;否则返回“许多” 场景1表格数据: Part_Status 'A' 'A' 'A' Part_Status 'A' Part_Status 'A' 'E' 返回 Part_Status 'A' Part_Status 'A' 'E' Part_Status 'Many' 场景2表格数据: Part_Status 'A' 'A' 'A' Part_Status 'A'

我期待着你对这个请求的意见,它似乎非常简单,但我无法独自解决

如果表列part_status有一个值,则返回该值;否则返回“许多”

场景1表格数据:

Part_Status
'A'
'A'
'A'
Part_Status
'A'
Part_Status
'A'
'E'
返回

Part_Status
'A'
Part_Status
'A'
'E'
Part_Status 
'Many'
场景2表格数据:

Part_Status
'A'
'A'
'A'
Part_Status
'A'
Part_Status
'A'
'E'
在此处返回col1值

Part_Status
'A'
场景3表格数据:

Part_Status
'A'
'A'
'A'
Part_Status
'A'
Part_Status
'A'
'E'
返回值

Part_Status
'Many'
第一个想法是使用用例,如果计数量大于1,则返回“许多”,但从未打印:

select DISTINCT case
     when count(PART_STATUS) > 1 THEN
      'MANY'
     ELSE
      PART_STATUS
   end
from (select DISTINCT Part_Status
      from Inventory_Part
     where part_status IN ('A','E')
     )
GROUP BY PART_STATUS
返回

Part_Status
'A'
Part_Status
'A'
'E'
Part_Status 
'Many'
在第二个想法中,我得到了“许多”工作,但单个结果为空

select CASE
     WHEN COUNT(PART_STATUS) > 1 THEN
      'Many'
   end AS "PART_STATUS"
FROM (select DISTINCT Part_Status
      from Inventory_Part
     where part_status IN ('A', 'E'))
返回

Part_Status
'A'
Part_Status
'A'
'E'
Part_Status 
'Many'

那么,如何将两者结合起来呢?

我可以解决这个问题。无论如何,我不相信这是一种明智的方式

select CASE
         when "cnt" > 1 THEN
          'Many'
         when "cnt" = 1 THEN
          PART_STATUS
       end
  from (select rownum AS "cnt", PART_STATUS
          FROM (select DISTINCT Part_Status
                  from Inventory_Part
                 where part_status IN ('A', 'E'))
         ORDER BY ROWNUM DESC)

 fetch first row only
像这样的

SQL> with test (part_status) as
  2    (select 'A' from dual union all
  3     select 'A' from dual
  4    )
  5  select distinct
  6         case when (select count(distinct part_status) from test) > 1 then 'Many'
  7              else part_status
  8         end
  9  from test;

CASE
----
A


让我查一查。我今天晚些时候会回来找你!谢谢