将公式从Crystal Reports转换为SSRS

时间:2017-07-08 03:27:25

标签: sql crystal-reports ssrs-expression

我会尽量保持这个尽可能短,但我正在尝试将水晶报告中的公式细胞转换为SSRS。

以下是查询:

SELECT
    (SELECT START_DATE
     FROM APPS.GL_PERIODS
     WHERE PERIOD_TYPE = 'Month'
       AND TRUNC(SYSDATE-:Days) BETWEEN START_DATE AND END_DATE) STR_DATE,
    (SELECT END_DATE
     FROM APPS.GL_PERIODS
     WHERE PERIOD_TYPE = 'Month'
       AND TRUNC(SYSDATE-:Days) BETWEEN START_DATE AND END_DATE) END_DATE,
    DECODE(RT.ORGANIZATION_ID, 104, 'LPD',RT.ORGANIZATION_ID) ORG,
    SUBSTR(POV.VENDOR_NAME, 1, 24) VENDOR_NAME,
    DECODE(SUBSTR(PHA.SEGMENT1, 2,1), 'E', 'EXPENSE', 'e', 'EXPENSE', 'P', 'PRODUCT', 'p', 'PRODUCT', ' OTHER') PO_TYPE,
    DECODE(SIGN(TRUNC(RT.TRANSACTION_DATE) - TRUNC(NVL(PLL.PROMISED_DATE - 3, PLL.NEED_BY_DATE - 3))), -1, 'LATE', 'ON TIME') PERFORMANCE,
    COUNT(*) LINE_COUNT
FROM 
    APPS.RCV_TRANSACTIONS RT,
    APPS.PO_HEADERS_ALL PHA,
    APPS.PO_LINES_ALL PLA,
    APPS.PO_LINE_LOCATIONS_ALL PLL,
    APPS.PO_VENDORS POV
WHERE 
    RT.ORGANIZATION_ID = 104
    AND RT.TRANSACTION_DATE >= (SELECT START_DATE
                                FROM APPS.GL_PERIODS
                                WHERE PERIOD_TYPE = 'Month'
                                  AND TRUNC(SYSDATE-:Days) BETWEEN START_DATE AND END_DATE)
    AND RT.TRANSACTION_DATE < (SELECT END_DATE + 1
                               FROM APPS.GL_PERIODS
                               WHERE PERIOD_TYPE = 'Month'
                                 AND TRUNC(SYSDATE-:Days) BETWEEN START_DATE AND END_DATE)
    AND RT.TRANSACTION_TYPE = 'RECEIVE'
    AND RT.PO_HEADER_ID = PLL.PO_HEADER_ID
    AND RT.PO_LINE_LOCATION_ID = PLL.LINE_LOCATION_ID
    AND RT.PO_LINE_ID = PLL.PO_LINE_ID
    AND RT.ORGANIZATION_ID = PLL.SHIP_TO_ORGANIZATION_ID
    AND PLA.PO_LINE_ID = PLL.PO_LINE_ID
    AND PLA.PO_HEADER_ID = PLL.PO_HEADER_ID
    AND PHA.PO_HEADER_ID = PLA.PO_HEADER_ID
    AND PHA.VENDOR_ID = POV.VENDOR_ID
GROUP BY 
    DECODE(RT.ORGANIZATION_ID, 104, 'LPD', RT.ORGANIZATION_ID), 
    SUBSTR(POV.VENDOR_NAME, 1, 24),
    DECODE(SUBSTR(PHA.SEGMENT1, 2, 1), 'E', 'EXPENSE', 'e', 'EXPENSE', 'P', 'PRODUCT', 'p', 'PRODUCT', ' OTHER'),
    DECODE(SIGN(TRUNC(RT.TRANSACTION_DATE) - TRUNC(NVL(PLL.PROMISED_DATE - 3, PLL.NEED_BY_DATE - 3))), -1, 'LATE', 'ON TIME')
ORDER BY 
    ORG,  VENDOR_NAME, PO_TYPE, PERFORMANCE

在水晶中,公式是

SUM({query.LINE_COUNT},{query.PERFORMANCE}) % SUM({query.LINE_COUNT}, {query.PO_TYPE})

这个单元格基本上只计算准时交货和迟交的百分比。

0 个答案:

没有答案