I need to Create 3 Variables from 1 Variable SQL Oracle SAP

2jcobegt  于 2023-06-05  发布在  Oracle
关注(0)|答案(3)|浏览(222)

我正在我的宇宙中创造三个变量。变量包括应用程序、操作系统和物理位置。我遇到的问题是,所有这三个都是从同一个表中拉出来的,而且都在Value中。
因此,表BMC_CORE_BMC_BASERELATIONSHIP具有变量Name。当name等于SYSTEMOS时,我尝试提取操作系统的所有目标示例ID。
我的第一个客户是使用派生表,这三个表都有一个单独的表,代码如下
“操作系统关系”派生表

SELECT
BMC_CORE_BMC_BASERELATIONSHIP.DESTINATION_INSTANCEID 
FROM 
BMC_CORE_BMC_BASERELATIONSHIP 
Where 
BMC_CORE_BMC_BASERELATIONSHIP.Name = 'SYSTEMOS'

“物理位置关系”导出表

SELECT
BMC_CORE_BMC_BASERELATIONSHIP.DESTINATION_INSTANCEID 
FROM 
BMC_CORE_BMC_BASERELATIONSHIP 
Where 
BMC_CORE_BMC_BASERELATIONSHIP.Name = 'ELEMENTLOCATION'

“应用程序关系”派生表

SELECT
BMC_CORE_BMC_BASERELATIONSHIP.DESTINATION_INSTANCEID 
FROM 
BMC_CORE_BMC_BASERELATIONSHIP 
Where 
BMC_CORE_BMC_BASERELATIONSHIP.Name = 'APPLICATIONSYSTEMCOMPUTER'

但是,当我尝试使用以下语法提取变量时,Webi中只会显示其中一个变量。其他人都被我弄明白了。
应用程序变量

Case 
WHEN CI_RELATED_CI.INSTANCEID ="Applications Relationship".DESTINATION_INSTANCEID
Then CI_RELATED_CI.NAME
END

位置变量

CASE
WHEN CI_RELATED_CI.INSTANCEID = "Physical Location Relationship".DESTINATION_INSTANCEID
THEN CI_RELATED_CI.NAME
END

OS变量

Case 
WHEN CI_RELATED_CI.INSTANCEID ="Operating System Relationship".DESTINATION_INSTANCEID
Then CI_RELATED_CI.NAME
END

我试图想一种方法,把所有这些作为单独的变量拉到一个派生表中,但到目前为止,我还没有成功。任何想法或建议将不胜感激。我是新来的,所以让我知道如果有什么我可以做的,使我的问题更好。

pes8fvy9

pes8fvy91#

我不确定我是否理解正确,这就是你想要的。这是Oracle示例,其中每列都有自己的名称或标签。您可以创建表为select -只需添加create table as before the select,您的列名将是标签名称:

SELECT ename, empno, 
   (CASE deptno WHEN 10 THEN 'Accounting' END) dept10
 , (CASE deptno WHEN 20 THEN 'Research' END)   dept20
 , (CASE deptno WHEN 30 THEN 'Sales' END)      dept30
 , (CASE deptno WHEN 40 THEN 'Operations' END) dept40
FROM scott.emp
ORDER BY ename
/
ENAME   EMPNO   DEPT10      DEPT20     DEPT30     DEPT40
---------------------------------------------------------------------
ADAMS   7876                Research        
ALLEN   7499                           Sales    
BLAKE   7698                           Sales    
CLARK   7782    Accounting          
.....
yiytaume

yiytaume2#

您可以使用如下案例

select Case 
WHEN BMC_CORE_BMC_BASERELATIONSHIP.Name = 'SYSTEMOS'
Then BMC_CORE_BMC_BASERELATIONSHIP.DESTINATION_INSTANCEID
WHEN BMC_CORE_BMC_BASERELATIONSHIP.Name = 'ELEMENTLOCATION'
Then BMC_CORE_BMC_BASERELATIONSHIP.DESTINATION_INSTANCEID
When BMC_CORE_BMC_BASERELATIONSHIP.Name = 'APPLICATIONSYSTEMCOMPUTER'
Then BMC_CORE_BMC_BASERELATIONSHIP.DESTINATION_INSTANCEID
Else 'Ur Comments'
END
from BMC_CORE_BMC_BASERELATIONSHIP;

或解码

select Decode( BMC_CORE_BMC_BASERELATIONSHIP.Name,'SYSTEMOS',BMC_CORE_BMC_BASERELATIONSHIP.DESTINATION_INSTANCEID,'ELEMENTLOCATION',BMC_CORE_BMC_BASERELATIONSHIP.DESTINATION_INSTANCEID,'APPLICATIONSYSTEMCOMPUTER',BMC_CORE_BMC_BASERELATIONSHIP.DESTINATION_INSTANCEID,else) from BMC_CORE_BMC_BASERELATIONSHIP;
zpgglvta

zpgglvta3#

我能够得到输出

create table BMC_CORE_BMC_BASERELATIONSHIP (name1 varchar2(100),id number);

insert into BMC_CORE_BMC_BASERELATIONSHIP (name1,id) values('SYSTEMOS',1);

insert into BMC_CORE_BMC_BASERELATIONSHIP (name1,id) values('ELEMENTLOCATION',2);

insert into BMC_CORE_BMC_BASERELATIONSHIP (name1,id) values('APPLICATIONSYSTEMCOMPUTER',3);

select Case 
WHEN Name1 = 'SYSTEMOS'
Then id
WHEN Name1 = 'ELEMENTLOCATION'
Then id
When Name1 = 'APPLICATIONSYSTEMCOMPUTER'
Then id
Else id
END
from BMC_CORE_BMC_BASERELATIONSHIP ;

输出:

1
2
3

使用Decode:

select Decode(Name1,'SYSTEMOS',id,'ELEMENTLOCATION',id,'APPLICATIONSYSTEMCOMPUTER',id,id) 
from BMC_CORE_BMC_BASERELATIONSHIP;

输出:

1
2
3

相关问题