暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 当案例计数语句查询问题

askTom 2018-02-19
264

问题描述

您好Oracle团队,我现在有这个测试查询,我有这个表。

id        |  cost_center       |hardware
beni      |  aaaa              |PC123
beni      |  aaaa              |PC234
ari       |  bbbb              |PC456
cari      |  cccc              |PC678
复制


如果用户有多台机器,我需要在硬件列中创建指示。如果用户拥有1个以上的硬件,则硬件列或新列将被写为 “多个hw”
如果用户只有一台机器,则将使用该用户的硬件数据写入硬件或新列。

示例输出:

id        |  cost_center       |hardware
beni      |  aaaa              |Multiple HW
ari       |  bbbb              |PC456
cari      |  cccc              |PC678
复制


我有这个查询。

Select distinct id,cost_center,
case
when count(hardware) > 1
then 'Multiple Hardware'
when count(hardware) = 1
then Hardware
end as hardware_new
from table
复制


请帮帮我。非常感谢。

仅当我将then语句设置为字符串时,此查询才适用,但我需要从列中调用它。
我是新来的,我尝试搜索,但也许找不到正确的陈述。


专家解答

你要找的是group by,而不是distinct:

create table t (
  id varchar2(10), cost_center varchar2(10), hardware varchar2(10)
);

insert into t values ('beni','aaaa','PC123');
insert into t values ('beni','aaaa','PC234');
insert into t values ('ari','bbbb','PC456');
insert into t values ('cari','cccc','PC678');

Select id,cost_center,
       case
         when count(distinct hardware) > 1
         then 'Multiple Hardware'
         when count(distinct hardware) = 1
         then min(Hardware)
       end as hardware_new
from   t
group  by id,cost_center;

ID     COST_CENTER   HARDWARE_NEW        
cari   cccc          PC678               
beni   aaaa          Multiple Hardware   
ari    bbbb          PC456 
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论