【问题标题】:How to get Sum of different columns in a table based on condition on each of them如何根据每个列的条件获取表中不同列的总和
【发布时间】:2012-12-07 08:38:15
【问题描述】:

我有一个包含 30 个不同字段的表。只有当它们具有特定值时,我才想要所有列的总和。当字段中的值不满足特定条件时,我不希望将字段的值考虑为求和。比如我有5个字段id,Score1,Score2,Score3,Score4。只有当它们没有值 -8 或 -9 时,我才想要所有这些不同字段的总和。我该怎么做。

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    在“真正的”SQL 中,您将使用 CASE 语句,但在 Access 中似乎不支持该语句(通过 VBA 除外)。尝试使用类似的东西:

    iif(score1 <> -8 and score1 <> -9, score1, 0) + iif(score2 <> -8 and score2 <> -9, score2, 0) + ....
    

    查看此内容以了解有关 iif http://office.microsoft.com/en-us/access-help/iif-function-HA001228853.aspx 的详细信息

    【讨论】:

    • 感谢您的回复。让我更详细地解释一下。我有一个表格和表格,其中输入并保存了值 c_id、ch_id、Score1、Score 2、Score3、Score4。我要计算分数的形式是完全不同的形式。要求是我有一个组合框,其中包含所有值 c_id 。现在基于此,我必须生成一个包含 c_id、ch_id、总分的报告。如果问题很长,我真的很抱歉。我不明白的是如何使用您在 VBA 的查询中指定的条件。
    • 对不起,我的意思是说在 VBA 之外,没有 CASE 语句,但是您可以在查询或 VBA 语句中使用 iif。在 VBA 中,您将使用 myVariable = iif(),而在查询中则使用 myAlias: iif()。不过我不擅长 Access,你可能不得不说myAlias: (iif() + iif() + ...)
    • Hey EvilBob...非常感谢...我做了一些更改,IIF 可以在查询和 VBA 中使用。
    【解决方案2】:

    在 SQL 中,您可以使用这样的查询,

    SELECT c_id,ch_id, (IIF(Response4 -8 AND Response4 -8, Response4 , 0)) + (IIF(Response3 -8 AND Response3 -8, Response3 , 0)) AS 分数 来自教师问卷;

    在 VBA 中你可以使用相同的方法:

    将 db 作为数据库 暗淡作为记录集 将 sSQL 作为字符串变暗 将 sSQL1 作为字符串调暗

    sSQL = " SELECT  SUM ( " & _
    

    "(IIF(Teacher_Questionnaire.Response4 -8 AND Teacher_Questionnaire.Response4 -8, Teacher_Questionnaire.Response4 , 0)) + " & _ "(IIF(Teacher_Questionnaire.Response3 -8 AND Teacher_Questionnaire.Response3 -8, Teacher_Questionnaire.Response3 , 0)) ) AS 分数" & _ “来自 Teacher_Questionnaire,其中 ch_id = 99”

    Set db = CurrentDb
    Set rs = db.OpenRecordset(sSQL)
    
    If rs.RecordCount > 0 Then
        Me.TxtLevel1 = rs!Score
    Else
        Me.TxtLevel1 = "N/A"
    End If
    
    Set rs = Nothing
    Set db = Nothing
    

    结束子

    【讨论】:

    • 是的,我就是这么想的!
    猜你喜欢
    • 2019-08-18
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2019-11-13
    • 2020-11-30
    相关资源
    最近更新 更多