將第一個 sql 語句中的結果作為第二個 sql 的引數值

xiaohuihui發表於2019-12-29

需求:
報表多個資料集,第二個資料集的引數需要引用第一個資料集的結果集作為引數值過濾資料。

解決思路:
因為報表的資料集都是同時計算的,所以不能直接將 ds1 的結果集作為 ds2 的引數值。
所以使用動態引數的方式,利用 query() 函式去解決。

示例說明:將 demo 資料庫表中訂單表透過貨主名稱過濾資料,然後查詢對應的訂單 ID 的  訂單明細。
操作步驟:
1、先新建一個資料集 ds1、設定方法如下圖。並且在報表—引數裡面增加引數 arg1。

imagepng

imagepng

2。新建 ds2 資料集,
          sql 語句為:select  * from  訂單明細  where  訂單 ID  in   (${m})      
       說明:1. 因為 ${m}  是動態引數的寫法,所以不需要設定資料集的引數。
                 2. 因為 ds1 過濾的資料可能不是一條,所以我們用 in 的字串組的方式去過濾 ds2 的資料。

3、設定動態引數。

imagepng

  寫 if 的判斷是為了 ds2 資料集一個預設引數值。不然當引數為空的時候 會報錯。

然後執行報表預覽既可測試效果。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2671154/,如需轉載,請註明出處,否則將追究法律責任。

相關文章