1. 程式人生 > >將第一個sql語句中的結果作為第二個sql的引數值

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

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

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

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

2。新建ds2資料集,
          sql語句為:select  * from  訂單明細  where  訂單ID  in   (${m})      


       說明:1.因為${m}  是動態引數的寫法,所以不需要設定資料集的引數。
                 2.因為ds1 過濾的資料可能不是一條,所以我們用in的字串組的方式去過濾ds2的資料。
3、設定動態引數。


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

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

相關推薦

一個sql語句結果作為第二sql數值

需求;     報表多個數據集,第二個資料集的引數需要引用第一個資料集的結果集作為引數值過濾資料。 解決思路: 因為報表的資料集都是同時計算的,所以不能直接將ds1 的結果集作為ds2 的引數值。 所以使用動態引數的方式,利用query() 函式去解決。 示例說明:將demo

集算器如何一個sql語句結果作為第二sql數值

集算器裡面如何將第一個sql執行的結果作為第二個資料集的引數值去過濾第二個資料集的資料呢?例如  我的第一個query()  裡面的結果是多條資料。然後將其中一個欄位的結果 作為 第二個資料集的引數去過濾資料。  在報表5 裡面ds2 資料集的引數 可以寫動態引數。表示式寫

oracle兩上select語句結果作為一個整體顯示出來

1、union 對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序。 2、union all 對兩個結果集進行並操作,包括重複行,不進行排序。 3、intersect 對兩個結果集進行交集操作,不包括重複行,同是進行預設規則的排序。 4、minus 對兩個結果

提交訂單效能優化系列之013-測試SQL語句少查詢幾欄位(包括大欄位)

概括總結 這一版本寫了兩個測試類,一個測試類中查詢全部欄位,另一個測試類中只查詢必要的欄位,然後對比效能。結論是:根據是減少的欄位的長度不同,效能會不同。具體請檢視下面的測試結果。 013版本更新說

MyBatis 向Sql語句動態傳引數·動態SQL拼接

在動態傳遞引數的時候,需要用到OGNL表示式,不懂的童鞋可以下去百度,這裡製作一個簡要的介紹 在向XML檔案傳遞引數的時候,需要用到sqlSession.selectList("Message.que

Solr===>>查詢結果高亮顯示===>>程式碼僅查詢到的一個solr域的第一值高亮顯示

// 查詢結果高亮顯示 public Map<String, Object> searchHightLight(Map searchMap){ Map map=new HashMap(); HighlightQuery query = ne

SQL語句怎樣計算結果開根號?該如何解決

在SQL語句中怎樣將計算結果開根號?在SQL語句中怎樣將計算結果開根號?請高手多幫忙,謝謝。------解決方案--------------------select power(32,1.0/5) --result /* ----------- 2 (所影響的行數為 1

SQL語句把多條記錄同一欄位的值連線成一個字串顯示結果集(sql stuff)

SELECT STUFF('abcdef', 2, 3, 'ijklmn'); 結果:aijklmndf。 1. if object_id('[tb]') is not null drop table [tb] go create table [tb]([Inv] int

c#變數嵌入SQL語句

1、使用 ' " +    + " ' 拼接 string mysql = " SELECT Cname,Grade FROM student,score,course WHERE student.Sno = score.Sno

oraclesql語句查詢結果的交集、差集和並集

1.交集 intersect運算:返回查詢結果中相同的部分。 SELECT product_id FROM tab1 INTERSECT SELECT product_

利用SQL語句的case、when、sum實現的一列變為多列

一、原表status的結構如圖所示:展示的主要欄位有addtime1(丟失時間)、addtime2(撿到時間)、status(狀態)1,表示成功;2 表示認領中;0表示未認領;二、現在報表設計的需求是統計一個月之內成功認領的個數、兩個月之內成功認領的個數、三個月之內成功認領以

返回動態SQL語句執行結果

--值,動態查詢結果返回 DECLARE @query NVARCHAR(MAX) DECLARE @testVal INT SET @query='select @testVal=

sql語句直接時間戳轉化為時間格式

例如將:1532311689  =》2018-07-23 10:8:9 語句如下:select *,FROM_UNIXTIME(addtime,'%Y-%m-%d %H:%i:%s') as addTime from user 重點是:FROM_UNIXTIME(addt

sql語句,如何獲取一個日期的周開始日期,周結束日期

獲取一個日期的周開始日期,周結束日期,舉例如下 獲取當前日期的周開始結束日期 select        case          when to_char(sysdate, 'D') = 1 then           to_char(sysdate -      

sql語句where 1=1和 0=1 的作用

代碼 address .com style 語句 reat www new add sql where 1=1和 0=1 的作用 where 1=1; 這個條件始終為True,在不定數量查詢條件情況下,1=1可以很方便的規範語句。 一、不用where 1=1 在

Sql語句IN和exists的區別及應用

應用場景 將不 集中 pre 代碼 根據 gif 效率 .cn   表展示     首先,查詢中涉及到的兩個表,一個user和一個order表,具體表的內容如下:     user表:          order表:        in     確定給定的值是否與子查

sql語句left join、right join、inner join的區別

select http img image ner -s style nbsp color left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄; right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄;inner j

SQl語句使用占位符的優點

date 註入 了解 運行環境 可讀性 統計信息 浪費 cut val 1.增加SQL代碼可讀性2.占位符可以預先編譯,提高執行效率3.防止SQL註入4用占位符的目的是綁定變量,這樣可以減少數據SQL的硬解析,所以執行效率會提高不少 綁定變量是Oracle解決硬解析的首

sql語句where 1=1和1=0的作用

lec 動態sql select語句 link 最終 ble 用戶 作用 並且 一、不用where 1=1 在多條件查詢中的困擾   舉個例子,如果您做查詢頁面,並且,可查詢的選項有多個,同時,還讓用戶自行選擇並輸入查詢關鍵詞,那麽,按平時的查詢語句的動態構造,代碼大體如

在T-SQL語句訪問遠程數據庫

school 本地 customer its date rom rowset update 登陸名 1、啟用Ad Hoc Distributed Queries 在使用openrowset/opendatasource前搜先要啟用Ad Hoc Distributed Que