2012-11-09 57 views
0

我們有一個與Crystal Reports很好地集成的ERP。 現在,我們可以通過這個應用程序添加過濾器,並將它們傳遞給報告(不是作爲參數,而是以某種方式將其添加到WHERE子句中)。SQL-獲取WHERE子句中使用的日期?

的問題是,過濾日期的時候,我們在報告中沒有辦法確定用戶選擇什麼樣的日期範圍(因爲我們希望在報表中顯示此日期)。

任何想法如何通過SQL顯示此?

我想使用雙表,並選擇一個巨大的日期列表,然後使用MIN和MAX這些日期的,以確定哪些被選中的。問題是,我無法將它加入到我的原始查詢中,而無需添加大量的行。

我有這個至今:

SELECT 
    MIN(DTE) MIN_DTE, 
    MAX(DTE) MAX_DTE 
FROM 
(
    SELECT 
    TRUNC(SYSDATE)-(5*365) + ROWNUM AS DTE 
    FROM 
    DUAL 
    CONNECT BY 
    ROWNUM <= (10*365) 
) 
WHERE 
    DTE >= '12-NOV-07' 
    AND DTE <= '12-DEC-07' 

但問題是我不知道如何加入,要我原來的查詢,而無需打亂該行續

還有其他想法嗎?

+1

將數據集返回給您後,無法找出創建該數據集的查詢。爲什麼不盡早保存用戶的選擇? – ean5533

+1

也許您可以使查詢成爲報表包將日期作爲參數傳遞的存儲過程。在存儲過程中,返回包含參數的多個結果並不重要。 – wallyk

+0

不幸的是,它不適用於存儲過程 – Lock

回答

0

該查詢返回只有一行,所以不會打亂行數可言,除非有別的事情上(比如,也許,自動過濾不工作的子查詢)。

否則,這應該按預期工作:

SELECT q.*, max_min.* 
FROM (... put your original query here ...) q, 
    (... put the subquery that returns one row with max & min here ...) max_min 

這一切吧。