水晶报告汇总重复客户费率的小计

时间:2016-12-13 20:34:12

标签: crystal-reports

我正在尝试基于嵌套的MySQL查询在Crystal Reports中创建报告,尽管我不确定是否可以在CR中重新创建。我正在运行CR 2016 Support Pack 2 v 14.2。这是我试图在CR中模仿的嵌套查询。

SELECT
    count(DISTINCT a.cust_sid) AS numCurCust,
    SUM(CASE WHEN a.prevCust > 0 THEN 1 ELSE 0 END) AS numRptCust,
    SUM(CASE WHEN a.prevCust = 0 THEN 1 ELSE 0 END) AS numNewCust,
    SUM(a.curCust) AS numCurOrders,
    SUM(CASE WHEN a.prevCust > 0 THEN a.curCust ELSE 0 END) as numCurOrdersFromPrevCust,
    SUM(CASE WHEN a.prevCust = 0 THEN a.curCust ELSE 0 END) AS numCurOrdersFromNewCust
FROM (
SELECT
    i.cust_sid,
    COUNT(DISTINCT CASE WHEN i.created_date >= '2013-01-01 00:00:00' AND i.created_date <= '2015-12-31 00:00:00' THEN CONCAT(i.invc_sid," ",DATE_FORMAT(i.created_date,'%Y-%m-%d')) END) AS curCust,
    COUNT(DISTINCT CASE WHEN i.created_date <= '2013-01-01 00:00:00' THEN CONCAT(i.invc_sid," ",DATE_FORMAT(i.created_date,'%Y-%m-%d')) END) AS prevCust
FROM invoice i 
LEFT JOIN invc_item ii ON i.invc_sid = ii.invc_sid
LEFT JOIN invc_tender it ON i.invc_sid = it.invc_sid
WHERE i.invc_no != 0 AND 
    i.invc_type = 0 AND
    i.store_no = 0 AND 
    i.cust_sid IS NOT NULL AND 
    ii.invc_sid IS NOT NULL AND 
    ii.QTY > 0 AND
    (ii.QTY *  ii.price * ((100 - IFNULL(i.DISC_PERC, 0)) / 100)) > 0 AND 
    it.tender_type != 5
GROUP BY i.cust_sid
HAVING curCust > 0)a

我目前在Crystal Reports中设置了日期范围参数,然后我按{INVOICE.CUST_SID}对结果进行分组。我有两列curCust,其中一列是使用{INVOICE.INVC_SID}的不同计数,在{INVOICE.CREATED_DATE} = {?DateRange}上进行评估,在{INVOICE.CUST_SID}更改后重置。我有prevCust的另一个列,它也是使用{INVOICE.INVC_SID}的不同计数的运行总计,使用{INVOICE.CREATED_DATE} <= MINIMUM({?DateRange})进行评估,并在{INVOICE.CUST_SID}更改时重置。

我被困在的地方是根据重置前每列的结束运行总计创建一个公式。如果curCustprevCust都是> 0,那么在第三列中显示1,可以使用SUM汇总以获得'Total#Rpt Cust'。如果prevCust = 0且curCust&gt; 0然后在第四列显示1中,可以使用SUM来汇总以获得Total # New Cust。此外,我还需要另外两列来为新客户和唯一客户计算不同的{INVOICE.INVC_SID}。但我无法弄清楚如何基于结束运行总计来创建公式,也无法弄清楚如何根据结束运行总计来总结公式字段。

有人能指出我如何完成任何这方面的正确方向吗?

0 个答案:

没有答案