【问题标题】:Use result of two subqueries to calculate ratio使用两个子查询的结果来计算比率
【发布时间】:2014-01-31 09:53:31
【问题描述】:

我有以下问题

SELECT 'Active Borrowers per Loan Officer' AS PERFORMANCE_RATIOS,
    (
        SELECT count(DISTINCT L.CUSTOMER_ID) / COUNT(DISTINCT L.MIS_ACCT_OFFICER) AS RATIO
        FROM LD_LOANS_AND_DEPOSITS L
        WHERE REPORT_DATE = (
                SELECT MIN(REPORT_DATE)
                FROM LD_LOANS_AND_DEPOSITS
                )
        ) AS RATIO1,
    (
        SELECT count(DISTINCT L.CUSTOMER_ID) / COUNT(DISTINCT L.MIS_ACCT_OFFICER) AS RATIO
        FROM LD_LOANS_AND_DEPOSITS L
        WHERE REPORT_DATE = (
                SELECT MAX(REPORT_DATE)
                FROM LD_LOANS_AND_DEPOSITS
                )
        ) AS RATIO2,
    (
        (
            SELECT count(DISTINCT L.CUSTOMER_ID) / COUNT(DISTINCT L.MIS_ACCT_OFFICER) AS RATIO
            FROM LD_LOANS_AND_DEPOSITS L
            WHERE REPORT_DATE = (
                    SELECT MAX(REPORT_DATE)
                    FROM LD_LOANS_AND_DEPOSITS
                    )
            ) - (
            SELECT count(DISTINCT L.CUSTOMER_ID) / COUNT(DISTINCT L.MIS_ACCT_OFFICER) AS RATIO
            FROM LD_LOANS_AND_DEPOSITS L
            WHERE REPORT_DATE = (
                    SELECT MIN(REPORT_DATE)
                    FROM LD_LOANS_AND_DEPOSITS
                    )
            )
        ) / (
        SELECT count(DISTINCT L.CUSTOMER_ID) / COUNT(DISTINCT L.MIS_ACCT_OFFICER) AS RATIO
        FROM LD_LOANS_AND_DEPOSITS L
        WHERE REPORT_DATE = (
                SELECT MIN(REPORT_DATE)
                FROM LD_LOANS_AND_DEPOSITS
                )
        ) * 100 AS CHANGE,
    (
        SELECT MIN(REPORT_DATE)
        FROM LD_LOANS_AND_DEPOSITS
        ) AS REPORT_DATE1,
    (
        SELECT MAX(REPORT_DATE)
        FROM LD_LOANS_AND_DEPOSITS
        ) AS REPORT_DATE2

我需要做的是在外部使用 Ratio1/Ratio2 而不必重复返回这些 2 值的整个 sql 代码。我该怎么做?

【问题讨论】:

  • 刚刚添加,抱歉

标签: sql sql-server subquery


【解决方案1】:

这是你的答案

SELECT PERFORMANCE_RATIOS, RATIO1, RATIO2, RATIO1 - RATIO2 AS SUBTRACT, RATIO1 * RATIO2 AS Multiply
FROM (
SELECT 'Active Borrowers per Loan Officer' AS PERFORMANCE_RATIOS,
    (
        SELECT count(DISTINCT L.CUSTOMER_ID) / COUNT(DISTINCT L.MIS_ACCT_OFFICER) AS RATIO
        FROM LD_LOANS_AND_DEPOSITS L
        WHERE REPORT_DATE = (
                SELECT MIN(REPORT_DATE)
                FROM LD_LOANS_AND_DEPOSITS
                )
        ) AS RATIO1,
    (
        SELECT count(DISTINCT L.CUSTOMER_ID) / COUNT(DISTINCT L.MIS_ACCT_OFFICER) AS RATIO
        FROM LD_LOANS_AND_DEPOSITS L
        WHERE REPORT_DATE = (
                SELECT MAX(REPORT_DATE)
                FROM LD_LOANS_AND_DEPOSITS
                )
        ) AS RATIO2
) Table

【讨论】:

    猜你喜欢
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多