2013-03-18 56 views
-1

我被卡住了,需要建議。 這可能很簡單,但是,我是初學者,想盡快學習,所以請耐心等待。 我有一個包含「A」/「P」格式考勤數據的表格。我試圖在報告中顯示一個班級內有多少人在日期範圍內錯過了三次或更多次。大多數情況下,我有SQL語句執行所有工作,但有一個例外。我可以顯示某人錯過了多少次的總和,但我無法弄清楚如何僅顯示缺課時間超過3次的學生。IIF聲明幫助 - 總和值大於或等於

=SUM(IIF(Fields!Attendance.Value ="A",1,NOTHING))

如果我寫這樣的表達: 我進入上我想要的數據,在返回列的表達式如下

=SUM(IIF(Fields!Attendance.Value ="A",1,NOTHING))>=3

我得到TRUE/FALSE返回。如果我可以弄清楚如何只顯示TRUE的回報,那就沒問題了。

任何意見是讚賞!

我的整個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 
+0

您正在使用哪個版本的Microsoft Excel? – Octopus 2013-03-18 18:40:19

+0

你可以發佈你的整個查詢,並解釋一點。如果有人錯過了三次以上的課程,你只想顯示記錄嗎? – DevelopmentIsMyPassion 2013-03-18 18:40:44

+0

這是你想在Excel或SQL? – DevelopmentIsMyPassion 2013-03-18 18:41:22

回答

0

想要試試這個嗎?

道岔:你可能要檢查: 兩個[Start Date][End Date]設置爲CATD.occurrence_end_time

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 
+0

查詢不會運行。當我嘗試預覽報告時,我會看到空白屏幕。我刪除了所有的experssions,並將它們添加回來以確保我沒有遺漏任何東西。 – user2183577 2013-03-18 21:06:56

+0

你是什麼意思黑屏?你在SQL服務器上運行這個還是?它至少應該給你一些輸出。 – 2013-03-19 04:48:18

+0

Visual Studio中報表中的空白屏幕,以及直接在SQL上運行的屏幕。列填充,但不返回數據。 – user2183577 2013-03-19 14:54:02