私は、学期、学期、年間の開始日と終了日を決定する必要がある大規模な学区データベースを持っています。各学校は休日が異なる場合があります(週末ともに開始日という言葉に計算されます)。 私は、学校、休暇、各学期の終了日、そしてその計算から各学期の開始日を引っ張っています。ここまでは順調ですね。しかし、一部の学校では、1年を通して(9月から6月まで)学期やその他のクラスに登録されたクラスもあります。だから私は(これは多くの学校の1を表す。)のようなものを見て、私の最後の返される日付をしたい:C#Linq to SQL、グループ化された行の最小値と最大値を検索
SchoolId SchoolYear TermCode TermBegin TermEnd TermCodeId
8CFD1 2016 TM1 08/29/2016 10/07/2016 F375E7
8CFD1 2016 TM2 10/10/2016 11/25/2016 898EF5
8CFD1 2016 TM3 11/28/2016 02/01/2017 F5140C
8CFD1 2016 TM4 02/02/2017 03/10/2017 DD95B1
8CFD1 2016 TM5 03/13/2017 05/05/2017 BE3635
8CFD1 2016 TM6 05/08/2017 06/09/2017 2B94F0
8CFD1 2016 YR 08/29/2016 06/09/2017 D97C9C
私が得ている最も近いが、このクエリ(私は開始日を計算した結果を用いて)です:
from tdf in ReturnFromCalculatingStartDate
join tcd in SCH_YR_TRM_CODES on tdf.SchoolYearTermDefGu equals tcd.SCHOOL_YEAR_TRM_DEF_GU
orderby tcd.TERM_CODE
select new TermResult {
SchoolId = testOrgGu,
SchoolYear = testSchoolyear,
TermCode = tcd.TERM_CODE,
TermBegin = tdf.TermStartDate,
TermEnd = tdf.TermEndtDate,
TermCodeId = tcd.SCHOOL_YEAR_TRM_CODES_GU
これは正しく条件を返しますが、各用語に対して1年(YR)を取得します。私が必要とするのは、YR行のMin(TermBegin)とMax(TermEnd)を持つ1つのYR行です。私はSchoolIdとTermCodeをグループ化し、それぞれの固有コードの最小値と最大値を取得する必要がありますが、どのようにしたらよいか分かりません。
上記Linqから返されたデータは以下のとおりです。 Min(TermBegin)YR行のTermCodeIdは、結果に必要なTermCodeIdです。
SchoolId SchoolYear TermCode TermBegin TermEnd TermCodeId
8CFD1 2016 TM1 08/29/2016 10/07/2016 F375E7
8CFD1 2016 TM2 10/10/2016 11/25/2016 898EF5
8CFD1 2016 TM3 11/28/2016 02/01/2017 F5140C
8CFD1 2016 TM4 02/02/2017 03/10/2017 DD95B1
8CFD1 2016 TM5 03/13/2017 05/05/2017 BE3635
8CFD1 2016 TM6 05/08/2017 06/09/2017 2B94F0
8CFD1 2016 YR 08/29/2016 10/07/2016 d97C9C
8CFD1 2016 YR 10/10/2016 11/25/2016 e30980
8CFD1 2016 YR 11/28/2016 02/01/2017 ef5de2
8CFD1 2016 YR 02/02/2017 03/10/2017 bbe78f
8CFD1 2016 YR 03/13/2017 05/05/2017 ca28a7
8CFD1 2016 YR 05/08/2017 06/09/2017 2340c1
これまでのところ、わかりやすくなりました。ここで
「SchoolId、SchoolYear、TermCode」でグループ化します。 'YR'の' TermCode'が 'Year'か他の値である場合、まずデータベース側でデータを修正してください。年に使用されたすべての異なるコードを見つけて、それらをすべて同じ値と1つの値にします。これはコードなので、同じでなければなりません。 – CodingYoshi
私は残念なことに、データを制御できません。しかしTermCodeは年と学校で一貫しているので、私はそのビットを削除しました。グループ化してからMinとMaxを取る必要があることは分かっていますが、その方法はわかりません。 – Jazzy