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