2017-09-01 23 views
1

的想法是,我有一個臨時表:選擇返回不同的表,基於其他表的條件在甲骨文

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,只有那些內有一些表。另一方面,我不能使用雙列,因爲列和行數可能有所不同。有任何想法嗎?

+1

我的建議是將表格標準化並擺脫CSV數據。它會使查詢和維護成爲一場噩夢。 –

+0

@TimBiegeleisen不幸的是,這個Sources列是在groupby期間生成的,我無法對此做任何事情。 – tweant

回答

0

如果列可能不同,那麼這在SQL中是不可能的。您必須在應用程序級別解決它。當用戶點擊帳單時,請從table_illings中選擇,否則從table_invoices中選擇。

但是,如果你能統一公共輸出列然後可以使用工會,像::兩個表

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# 

的輸出列必須是同一類型的。

0

您可以爲發票,帳單等單獨製作交互式報告,並使用「頁面項P1_TYPE的值爲X」形式的服務器端條件對所選類型有條件地進行適當渲染。

+0

我無法做到這一點,因爲該查詢已在現有的交互式報告中使用,插件嵌套報告。 – tweant