-1

ユニバースに 3 つの変数を作成する作業を行っています。変数は、アプリケーション、オペレーティング システム、および物理的な場所です。私が直面している問題は、これら 3 つすべてが同じテーブルから取り出され、それらすべてが値内にあることです。

したがって、テーブルBMC_CORE_BMC_BASERELATIONSHIPには変数 Name があります。name が に等しい場合、オペレーティング システムの宛先インスタンス ID をすべてプルしようとしていますSYSTEMOS

私の最初のゲストは、次のコーディングを使用して、3 つのそれぞれに個別のテーブルを持つ派生テーブルを使用することでした。

「オペレーティング システムの関係」派生テーブル

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'

ただし、次の構文で変数を取り込もうとすると、変数の 1 つだけが Webi に表示されます。他の人は無効になっていることがわかりました。

App Var

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

Location Var

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

OS Var

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

これらすべてを個別の変数として 1 つの派生テーブルにプルする方法を考えようとしていましたが、これまでのところ成功していません。ご意見やご提案をいただければ幸いです。私は新しいので、質問を改善するためにできることがあれば教えてください。

4

3 に答える 3

0
am able to get the out put 

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 ;
o/p #
1
2
3

select Decode(Name1,'SYSTEMOS',id,'ELEMENTLOCATION',id,'APPLICATIONSYSTEMCOMPUTER',id,id) 
from BMC_CORE_BMC_BASERELATIONSHIP;
o/p #
1
2
3
于 2013-01-17T20:56:37.367 に答える
0

私があなたを正しく理解しているかどうかわかりませんが、これはあなたが望むものです...これは、各列に独自の名前またはラベルがあるOracleの例です。選択としてテーブルを作成できます-選択の前に作成テーブルを追加するだけで、列名がラベル名になります。

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          
.....
于 2013-01-17T21:46:00.663 に答える
0
you can use case like below or Decode, 

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;

or Decode 

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;
于 2013-01-17T20:29:05.787 に答える