MS Access,基于条件的条件和
MS Access, Conditional Sum based on Criteria
我在 MS Access 中创建了一个查询,以按贷款汇总调整 # 如果它们是 AA 或 RA 类型。我需要帮助将其转换为 SQL,这将在访问中工作。
SELECT
RLI_ManualInterest.[Loan Account Number],
SUM(RLI_ManualInterest.[Loan Int Adjustment]) AS [SumOfLoan Int Adjustment],
RLI_ManualInterest.[GLAcct Interest]
FROM
RLI_ManualInterest
WHERE
(((RLI_ManualInterest.[Adjustment Type]) IN ("AA","RA")))
GROUP BY
RLI_ManualInterest.[Loan Account Number];
我需要创建两个字段,如果 Adjustment type 是 AA 或 RA,一个将包含 Int Adjustments 的总和,并且将被称为 [Loan Int Reaccr Adj Mtd],另一个将包含 Int Adjustments 的总和,如果调整类型为 FX、GL 或 FF。
如有任何帮助,我们将不胜感激
考虑以下使用 CASE WHEN
的条件求和表达式,大多数 RDMS 将其用于逻辑内联表达式。一个例外是 MS Access,其 ACE/JET SQL 方言不带有 CASE WHEN
。但是使用 pass-through queries 你仍然可以 运行 MS Access GUI 程序中的其他本地 SQL 方言与后端数据库交互(SQL 服务器,MySQL,Postgre, DB2、甲骨文等)。
) 通过 ODBC/OLEDB 个连接。
SELECT RLI_ManualInterest.[Loan Account Number],
SUM(CASE WHEN RLI_ManualInterest.[Adjustment Type] IN ('AA', 'RA')
THEN RLI_ManualInterest.[Loan Int Adjustment]
ELSE 0
END) AS [SumOfLoan Int Adjustment],
SUM(CASE WHEN RLI_ManualInterest.[Adjustment Type] IN ('FX', 'GL', 'FF')
THEN RLI_ManualInterest.[Loan Int Adjustment]
ELSE 0
END) AS [SumOfLoan Int Reaccr Adj Mtd]
FROM RLI_ManualInterest
GROUP BY RLI_ManualInterest.[Loan Account Number];
或者,在 MS Access 中等同于上述内容是使用从 SQL Server 2012 开始的逻辑 IIF() function (which is available。在这两个中,没有其他流行的 RDMS 使用 IIF()
:
SELECT RLI_ManualInterest.[Loan Account Number],
SUM(IIF(RLI_ManualInterest.[Adjustment Type] IN ('AA', 'RA'),
RLI_ManualInterest.[Loan Int Adjustment],
0)) AS [SumOfLoan Int Adjustment],
SUM(IIF(RLI_ManualInterest.[Adjustment Type] IN ('FX', 'GL', 'FF'),
RLI_ManualInterest.[Loan Int Adjustment],
0)) AS [SumOfLoan Int Reaccr Adj Mtd]
FROM RLI_ManualInterest
GROUP BY RLI_ManualInterest.[Loan Account Number];
我在 MS Access 中创建了一个查询,以按贷款汇总调整 # 如果它们是 AA 或 RA 类型。我需要帮助将其转换为 SQL,这将在访问中工作。
SELECT
RLI_ManualInterest.[Loan Account Number],
SUM(RLI_ManualInterest.[Loan Int Adjustment]) AS [SumOfLoan Int Adjustment],
RLI_ManualInterest.[GLAcct Interest]
FROM
RLI_ManualInterest
WHERE
(((RLI_ManualInterest.[Adjustment Type]) IN ("AA","RA")))
GROUP BY
RLI_ManualInterest.[Loan Account Number];
我需要创建两个字段,如果 Adjustment type 是 AA 或 RA,一个将包含 Int Adjustments 的总和,并且将被称为 [Loan Int Reaccr Adj Mtd],另一个将包含 Int Adjustments 的总和,如果调整类型为 FX、GL 或 FF。
如有任何帮助,我们将不胜感激
考虑以下使用 CASE WHEN
的条件求和表达式,大多数 RDMS 将其用于逻辑内联表达式。一个例外是 MS Access,其 ACE/JET SQL 方言不带有 CASE WHEN
。但是使用 pass-through queries 你仍然可以 运行 MS Access GUI 程序中的其他本地 SQL 方言与后端数据库交互(SQL 服务器,MySQL,Postgre, DB2、甲骨文等)。
) 通过 ODBC/OLEDB 个连接。
SELECT RLI_ManualInterest.[Loan Account Number],
SUM(CASE WHEN RLI_ManualInterest.[Adjustment Type] IN ('AA', 'RA')
THEN RLI_ManualInterest.[Loan Int Adjustment]
ELSE 0
END) AS [SumOfLoan Int Adjustment],
SUM(CASE WHEN RLI_ManualInterest.[Adjustment Type] IN ('FX', 'GL', 'FF')
THEN RLI_ManualInterest.[Loan Int Adjustment]
ELSE 0
END) AS [SumOfLoan Int Reaccr Adj Mtd]
FROM RLI_ManualInterest
GROUP BY RLI_ManualInterest.[Loan Account Number];
或者,在 MS Access 中等同于上述内容是使用从 SQL Server 2012 开始的逻辑 IIF() function (which is available。在这两个中,没有其他流行的 RDMS 使用 IIF()
:
SELECT RLI_ManualInterest.[Loan Account Number],
SUM(IIF(RLI_ManualInterest.[Adjustment Type] IN ('AA', 'RA'),
RLI_ManualInterest.[Loan Int Adjustment],
0)) AS [SumOfLoan Int Adjustment],
SUM(IIF(RLI_ManualInterest.[Adjustment Type] IN ('FX', 'GL', 'FF'),
RLI_ManualInterest.[Loan Int Adjustment],
0)) AS [SumOfLoan Int Reaccr Adj Mtd]
FROM RLI_ManualInterest
GROUP BY RLI_ManualInterest.[Loan Account Number];