Sql IIF语句帮助-大于或等于的值之和

Sql IIF语句帮助-大于或等于的值之和,sql,iif,Sql,Iif,我陷入困境,需要建议。 这可能很简单,但是,我在这里是一个初学者,并试图尽快学习,所以请容忍我。 我有一个表,其中包含“a”/“P”格式的考勤数据。我试图在一份报告中显示,一个班级中有多少人在约会范围内错过了三次或三次以上。在大多数情况下,SQL语句完成了所有工作,只有一个例外。我可以显示一个人缺席了多少次的总数,但我不知道如何只显示缺席超过3次的学生。 我在希望数据返回的列的表达式中输入以下内容: =SUM(IIF(Fields!attention.Value=“A”,1,NOTHING))

我陷入困境,需要建议。 这可能很简单,但是,我在这里是一个初学者,并试图尽快学习,所以请容忍我。 我有一个表,其中包含“a”/“P”格式的考勤数据。我试图在一份报告中显示,一个班级中有多少人在约会范围内错过了三次或三次以上。在大多数情况下,SQL语句完成了所有工作,只有一个例外。我可以显示一个人缺席了多少次的总数,但我不知道如何只显示缺席超过3次的学生。 我在希望数据返回的列的表达式中输入以下内容:

=SUM(IIF(Fields!attention.Value=“A”,1,NOTHING))

如果我这样写表达式:

=SUM(IIF(Fields!attention.Value=“A”,1,NOTHING))>=3

我得到正确/错误的回报。如果我能弄清楚如何只显示真实回报,那就好了

任何建议都将不胜感激

我的整个SQL语句——还有另外两个数据集被调用以将数据拉入其中

SELECT     smgp_group.group_id
    , smgp_group.group_name
    , core_v_person_basic.last_name + ', ' + core_v_person_basic.nick_name as Name
    , core_v_person_basic.birth_date AS Birthdate
    , '*' + CONVERT(varchar, core_v_person_basic.person_id) + '*' AS person_id
    , core_v_person_basic.street_address_1
    , core_v_person_basic.city + ',' + core_v_person_basic.state + ' ' + core_v_person_basic.postal_code AS Citystatezip
    , core_v_person_basic.home_phone
    , core_v_person_basic.email
    , core_lookup.lookup_value AS [Group Role]
    , CATD.occurrence_end_time
    , CATD.Attendance as attendance
    , MAX(CATD.DateLastAttended) AS Datelastattended
    , CATD.occurrence_end_time AS [Start Date]
    , CATD.occurrence_end_time AS [End Date]
    , '*$' + CONVERT(varchar, CATD.occurrence_id) + '*' AS 'occurrence_id'
    , core_v_person_basic.cell_phone
FROM smgp_group 
    INNER JOIN cust_v_attendanceroll AS CATD 
    INNER JOIN core_lookup ON CATD.role_luid = core_lookup.lookup_id 
    INNER JOIN core_v_person_basic ON CATD.person_id = core_v_person_basic.person_id ON smgp_group.group_id = CATD.group_id
where CATD.occurrence_end_time between @startdate AND @enddate and smgp_group.group_id IN (@group)
GROUP BY smgp_group.group_id, smgp_group.group_name, core_v_person_basic.last_name,core_v_person_basic.nick_name, core_v_person_basic.birth_date, core_v_person_basic.street_address_1, 
                      core_v_person_basic.city + ',' + core_v_person_basic.state + ' ' + core_v_person_basic.postal_code, core_v_person_basic.home_phone, 
                      core_v_person_basic.email, core_lookup.lookup_value, CATD.occurrence_end_time, CATD.Attendance, CATD.occurrence_id, core_v_person_basic.person_id, 
                      core_v_person_basic.cell_phone
HAVING attendance = 'A' 
ORDER BY attendance

想试试吗

旁白:您可能需要检查:
[开始日期]
[结束日期]
都设置为
CATD.发生时间\u结束时间

SELECT      *
FROM        (
        SELECT      smgp_group.group_id
                , smgp_group.group_name
                , core_v_person_basic.last_name + ', ' + core_v_person_basic.nick_name as Name
                , core_v_person_basic.birth_date AS Birthdate
                , '*' + CONVERT(varchar, core_v_person_basic.person_id) + '*' AS person_id
                , core_v_person_basic.street_address_1
                , core_v_person_basic.city + ',' + core_v_person_basic.state + ' ' + core_v_person_basic.postal_code AS Citystatezip
                , core_v_person_basic.home_phone
                , core_v_person_basic.email
                , core_lookup.lookup_value AS [Group Role]
                , CATD.occurrence_end_time
                , MAX(CATD.DateLastAttended) AS Datelastattended
                , CATD.occurrence_end_time AS [Start Date]
                , CATD.occurrence_end_time AS [End Date]
                , '*$' + CONVERT(varchar, CATD.occurrence_id) + '*' AS 'occurrence_id'
                , core_v_person_basic.cell_phone

                , COUNT(*) AS absentCount

        FROM        smgp_group 
                INNER JOIN cust_v_attendanceroll AS CATD 
                INNER JOIN core_lookup ON CATD.role_luid = core_lookup.lookup_id 
                INNER JOIN core_v_person_basic ON CATD.person_id = core_v_person_basic.person_id ON smgp_group.group_id = CATD.group_id
        WHERE       CATD.occurrence_end_time BETWEEN @startdate AND @enddate
                AND smgp_group.group_id IN (@group)
                AND CATD.Attendance = 'A'
        GROUP BY    smgp_group.group_id, smgp_group.group_name, core_v_person_basic.last_name,core_v_person_basic.nick_name, core_v_person_basic.birth_date, core_v_person_basic.street_address_1, 
                core_v_person_basic.city + ',' + core_v_person_basic.state + ' ' + core_v_person_basic.postal_code, core_v_person_basic.home_phone, 
                core_v_person_basic.email, core_lookup.lookup_value, CATD.occurrence_end_time, CATD.occurrence_id, core_v_person_basic.person_id, 
                core_v_person_basic.cell_phone
        ) AS tblSource
WHERE       absentCount>=3

您使用的是哪一版本的Microsoft Excel?能否发布您的整个查询并作进一步解释。如果某人缺课超过3次,您是否只想显示记录?这是您想要的excel还是sql?@Octopus您如何知道它的excel?对不起,是的,我在sql中查询不会运行。当我尝试预览报告时,会出现一个空白屏幕。我删除了所有的体验,并将它们添加回去,以确保我没有遗漏任何东西。什么是空白屏幕?您是在SQL server上运行此操作,还是在其他服务器上运行此操作?它至少应该给您一些输出。当直接在SQL上运行时,VisualStudio中报告的一个空白屏幕。列填充,但不返回数据。如果列填充意味着sql正常,则没有数据。。。startdate、enddate和group中是否可能没有缺席人数>=3的人?