根据Oracle

时间:2017-09-01 09:26:26

标签: oracle plsql oracle-apex

想法是我有一张临时表:

Type     | Sources
Invoices | 44,22,11
Billings | 99,90,12,34

在我的应用程序(交互式报告中包含交互式报告的顶点)中,用户单击一行图标:账单发票。在我的plsql查询中,我得到值 #type# #sources#作为结果(它们将通过顶点注入适当的值)。我希望实现这样的目标:

select
    case when #type# = 'Billings'
        then (select from table_billings where table_billings.sources = #sources#)
    when #type# = 'Invoices'
        then (select from table_invoices where table_invoices.sources = #sources#)

我对如何这样做有很大的问题,因为事实上我的主要选择是来自 NOTHING ,只有内部选择有一些表。另一方面,我无法使用dual,因为列数和行数可能会有所不同。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果列可能不同,那么在SQL中这是不可能的。您必须在应用程序级别解决它。当用户点击账单时,请从table_binings中选择table_binings,否则从table_invoices中选择。

但是,如果你可以统一公共输出列,那么你可以使用union,比如::

select col1, col2, col3 
  from table_billings
  where #type# = 'Billings' and sources = #sources#
union all
select colA, colB, colC 
  from table_invoices
  where #type# = 'Invoices' and sources = #sources#

两个表的输出列必须属于同一类型。

答案 1 :(得分:0)

您可以为Invoices,Billings等提供单独的交互式报告,并使用表单的服务器端条件有条件地为所选类型呈现适当的报告"页面项P1_TYPE的值为X"。