【问题标题】:MS Access, Conditional Sum based on CriteriaMS Access,基于条件的条件总和
【发布时间】:2016-05-31 09:17:10
【问题描述】:

我在 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 Adjustments 的总和,并将称为 [Loan Int Reaccr Adj Mtd],如果调整类型,另一个将包含 Int 调整的总和是 FX、GL 或 FF。

任何帮助将不胜感激

【问题讨论】:

  • msaccess 具有将您的查询转换为 sql 的功能。检查一下。
  • 伙计们,这是 SQL。转换成什么?你是说 SQL Server 吗? SQL 是一种甚至 MS Access 都使用的编程语言。请适当地标记和描述。
  • @Mike:请不要在标题中添加“[SOLVED]” - 通过接受答案,您的问题将被标记为已解决(答案符号在问题列表中具有不同的颜色)。

标签: sql ms-access conditional


【解决方案1】:

考虑以下使用CASE WHEN 的条件求和表达式,大多数RDMS 将其用于逻辑内联表达式。一个例外是 MS Access,其 ACE/JET SQL 方言不带CASE WHEN。但是使用pass-through queries,您仍然可以在 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 开始为 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];

【讨论】:

  • 哇,太完美了!谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-11-05
  • 2013-03-09
  • 2022-01-07
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多