我在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];
我需要创建两个字段,如果调整类型为AA或RA,则一个字段将包含Int调整的总和,并将其称为[Loan Int Reaccr Adj Mtd];如果调整类型为FX,则另一个字段将包含Int调整的总和, GL或FF。
任何帮助,将不胜感激
考虑下面的条件和表达式CASE WHEN
,大多数RDMS使用这些条件和表达式来进行逻辑内联表达式。但是,偶然的一个例外是MS Access,其ACE / JET SQL方言不携带CASE WHEN
。但是,使用传递查询,您仍然可以在MS Access GUI程序中运行其他本机SQL方言,以与后端数据库(SQL Server,MySQL,Postgre,DB2,Oracle等)进行交互。)通过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中与上述等效的方法是使用逻辑IIF()函数(从SQL Server 2012开始可用)。在这两个之中,没有其他流行的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];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句