2014-10-01 36 views
0

我需要編寫一個查詢來計算匹配給定條件的字段值之和。所以,我寫了這個自定義報表功能crystal report 2008.在查詢中使用自定義函數或公式

Function get_order_amount (ord_amount as number, inv_date as date, month as string, year as string) 
    -- ... 
    if inv_date(yyyymm) <= tonumber(year + month) then 
     return ord_amount 
    else 
     return 0 
    end if 
End Function 

現在,我希望用我的函數命令查詢篩選數據總結。即: (q_sum)

SELECT EXTRACT(YEAR FROM ORDER_DATE) AS "YEAR", 
    SUM(GET_ORDER_AMOUNT(AMOUNT,INVOICE_DATE,{?P_MONTH},{?P_YEAR})) 
FROM ORDERS 
GROUP BY EXTRACT(YEAR FROM ORDER_DATE) 

我怎麼能做到這一點?

+0

您試圖混合使用Crystal Reports功能的SQL查詢....我不知道它是如何工作,但使用的查詢......不要複雜的查詢..使用簡單的選擇語句,並在水晶報表公式中使用自定義函數 – Siva 2014-10-01 10:30:57

回答

0

我不相信你可以混合自定義函數與SQL查詢。

相反,您可以直接在SQL中使用CASE語句。

case語句會是這個樣子

Select EXTRACT(YEAR FROM ORDER_DATE) as YEAR 
       , SUM(CASE 
       WHEN INV_DATE <= **SOMEDATE** THEN 
         ORD_AMOUNT 
       ELSE 
         0 
       END) as Custom_Total 
    FROM ORDERS 
GROUP BY EXTRACT(YEAR FROM ORDER_DATE)