2015-12-10 104 views
-1

我需要創建一個報告,顯示出席每週的課程。我們使用電子入住系統,以便將每個人的信息與日期一起保存到數據庫中。在另一個查詢中查詢一列的結果

我可以輕鬆編寫一個查詢,獲取在給定日期簽入該班級的人員列表。從查詢的結果是這個樣子:

+-----------+------------+-----------+ 
| person id | first name | last name | 
+-----------+------------+-----------+ 
|  1234 | john  | smith  | 
|  1235 | jane  | smith  | 
+-----------+------------+-----------+ 

但我需要的是說,特定的人有多少次參加12周的時間內,這個類的附加列。所以我想結果會是這個樣子:

+-----------+------------+-----------+------------+ 
| person id | first name | last name | attendance | 
+-----------+------------+-----------+------------+ 
|  1234 | john  | smith  |   3 | 
|  1235 | jane  | smith  |   5 | 
+-----------+------------+-----------+------------+ 

我也能得到正確的結果與一個COUNT查詢「出勤」一欄。此查詢僅適用於在考勤表中指定人員ID的情況。

因此,我需要一個查詢,它將從第一個查詢中提取人員id,並計算出該人員在過去12周內參加過多少次並將其應用到列中。

附加信息: 它需要指出在包括上個星期日在內的12周時間內,該人蔘加過該課程的次數。

它始終是從當前日期12周

我想這是可能的,他們可能已經參加了每天兩班,但所有的類都是在星期天,這是足夠不太可能,我不需要對此的帳戶

這是基於一個星期天,所以我想答案是從上週日起的12周。

這裏是我的查詢,返回誰在上週日檢查的結果:

SELECT 
pb.person_id, pb.nick_name, pb.last_name, COS.occurrence_name, COS.occurrence_description, COS.date_created, COS.occurrence_type, COS.occurrence_id, sm.role_luid 
FROM core_v_occurrence_service COS 
JOIN core_occurrence_attendance oa ON oa.occurrence_id = COS.occurrence_id 
JOIN core_v_person_basic pb ON pb.person_id = oa.person_id 
JOIN smgp_member sm ON sm.person_id = OA.person_id 
WHERE oa.attended = 1 
AND COS.occurrence_type = 140 
AND COS.date_created BETWEEN (DATEADD(week,-1,GETDATE())) AND GETDATE() 
AND sm.role_luid IN (24,25, 28) 
AND sm.group_id = 3 

而這裏的,讓我多少次有人蔘加了一個類的計數查詢:

SELECT COUNT (oa.person_id) 
FROM core_occurrence_attendance oa 
JOIN core_v_occurrence_service COS on cos.occurrence_id = oa.occurrence_id 
WHERE oa.person_id = 27276 
AND oa.attended = 1 
AND COS.occurrence_type = 140 
AND COS.date_created BETWEEN (DATEADD(week,-12,GETDATE())) AND GETDATE() 

基本上我需要的是一個查詢,它將一個人的人員ID輸入到考勤表中的次數。因爲每次參加課程時都會將人員的個人ID輸入該表格。

+2

你應該從表格中發佈一些示例數據,不僅僅是輸出格式 –

+0

幾個問題可以幫助你找到一個好的答案:1)你希望那些在這個星期出席的人加上他們出席的次數在過去的十二週內,還是在過去十二個星期中曾經去過的人? 2)它總是'過去的十二週',還是'從_x_'開始的一段時間? 3)在這十二週內,人們是否可以參加不同的課程?如果是的話,你是否需要單獨出席? 4)是「距今天十二週」還是「上週日十二週」?編輯原始問題的答案。 – AHiggins

+1

請谷歌和了解SQL中的GROUP BY子句。 –

回答

0

我做到了! 我爲查詢出勤的查詢創建了一個CTE。

然後我在該CTE上做了SELECT DISTINCT並添加了一個GROUP BY以及所有列名。

我還在CTE中添加了我需要的12周的日期範圍。

+0

很高興聽到它。 –

1

您應該能夠通過添加一個組到查詢:

SELECT Person_ID, FIRST_NAME, LAST_NAME, COUNT(Person_ID) AS Attendance 
FROM <YOURTABLE> 
WHERE <DateField> BETWEEN <begindate> AND <enddate> 
GROUP BY Attendance 

集團通過將計算該人曾多少次出來上課,並把它變成一個細胞。

我不保證這段代碼運行,因爲你的文章是缺少一些information.replace在尖括號中的一切。

+1

'group by'應該在'Person_ID,FIRST_NAME,LAST_NAME'上 –

+0

是的,我的壞我是從袖口書寫 –

+0

我可以使用這個查詢作爲子查詢,或者是我已經寫過的,以顯示誰參加了I級我在看? –

相關問題