-1
好的,我一直試圖將這個概念化爲下午的一個更好的部分,但仍然無法弄清楚如何構造這個子選擇。Subselect和Max
我需要報告的數據是根據過去3個財政年度分組的特定學生專業的年齡。每個財政年度有3個學期(夏季,秋季,春季)。我需要將我的查詢分組到fiscalyear和agerange字段,然後計算不同的學生ID。
我現在有這對我的SQL語句:
Select COUNT(distinct StuID), AgeRange, FiscalYear
from tblStatic
where Campus like 'World%' and (enrl_act like 'REG%' or enrl_act like 'SCH%')
and StuMaj = 'LAWSC' and FiscalYear IN ('09/10', '10/11', '11/12')
group by FiscalYear, AgeRange
order by FiscalYear, AgeRange
所以這是所有罰款和花花公子只是它不符合我的學生對fiscalyear的人數。原因在於,人們可能會在年度範圍內跨越這個財政年度,並將它們兩次加到我的計數中。
如何使用子查詢解決此重複條目?我一直努力工作的領域是我的學期領域,並使用最大值在給定學生的fiscalyear期間找到最高學期。
數據樣本:
Count AgeRange FiscalYear
3 1 to 19 09/10
20 20 to 23 09/10
60 24 to 29 09/10
96 30 to 39 09/10
34 40 to 49 09/10
14 50 to 59 09/10
3 60+ 09/10
2 1 to 19 10/11
24 20 to 23 10/11
73 24 to 29 10/11
109 30 to 39 10/11
43 40 to 49 10/11
11 50 to 59 10/11
2 60+ 10/11
1 1 to 19 11/12
17 20 to 23 11/12
75 24 to 29 11/12
123 30 to 39 11/12
44 40 to 49 11/12
14 50 to 59 11/12
2 60+ 11/12
解決方案:(剛剛得到這個工作和生產符合他們的假設是,我的員工人數)
Select COUNT(distinct S.StuID), AR.AgeRange, S.FiscalYear
from tblStatic S
INNER JOIN
( Select S.StuID, MIN(AgeRange) as AgeRange
From tblStatic S
Group By S.StuID) AR on S.StuID=AR.StuID
where Campus like 'World%' and (enrl_act like 'REG%' or
enrl_act like 'SCH%')
and StuMaj = 'LAWSC' and FiscalYear IN ('09/10', '10/11', '11/12')
group by S.FiscalYear, AR.AgeRange
order by S.FiscalYear, AR.AgeRange
您能顯示樣本數據和期望的結果嗎?而不是存儲'AgeRange'(可能會有變化),爲什麼不存儲'Birthdate'(不是)?然後,計算總是依賴於現在或特定的時間點,而不是依賴於「AgeRange」列是否已在此期間更新。 – 2012-02-20 19:17:36
我無法在評論中閱讀,對不起。請編輯您的問題,並確保您可以明智地閱讀數據,並將您的樣本數據與期望的結果分開。 – 2012-02-20 19:22:10
對不起,這是新的板子。我添加了我希望我的最終結果看起來像的數據樣本。 AgeRange本身已經存在於我的數據庫中,並且存儲在學生註冊的每個學期。我確實有一個出生日期字段,我搞亂了,並且確實讓我的人數統一了,但數字似乎沒有了,因爲在前兩年我必須在我的datediff表達式中執行Getdate()-1或-2 。 – user1187569 2012-02-20 19:32:35