0

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

4

2 回答 2

0

在“真正的”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

于 2012-12-06T23:25:57.180 回答
0

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

SELECT c_id,ch_id, (IIF(Response4 <> -8 AND Response4 <> -8, Response4 , 0)) + (IIF(Response3 <> -8 AND Response3 <> -8, Response3 , 0)) AS Score from Teacher_Questionnaire ;

在 VBA 中,您可以使用以下相同的内容:

Dim db As Database Dim rs As Recordset Dim sSQL As String Dim sSQL1 As String

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 where 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

结束子

于 2012-12-07T00:38:15.930 回答