想法是我有一张临时表:
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,因为列数和行数可能会有所不同。有什么想法吗?
答案 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"。