2011-02-09 18 views
0

職員がEmploymentテーブルに複数の行を持っていても、EmploymentAssignment行ごとに1行しか取得できません。私は(Person、Identity、EmploymentAssignment、School and Departmentから来た既存のstaffMemberビューからのフィールドを含む)新しい地区に "districtStart"というエイリアスを入れて、Employment.startDateを報告する。)これは私の試験の質問です。 1つの課題だけを引き出す方法を理解することはできません。これは私が持っているものであり、彼女はそれが正しいと言いますが...それは複数の課題を引っ張っています。どんな援助も、私の頭を壁に打ちつけるのを止めるだろう。私はSQLを学び、学校のシステムのために働いています

SELECT 
    p.personID, 
    p.stateID, 
    p.staffNumber, 
    p.staffStateID, 
    i.identityID, 
    i.effectiveDate, 
    i.lastName, 
    i.firstName, 
    i.middleName, 
    i.suffix, 
    i.alias, 
    i.gender, 
    i.birthdate, 
    i.ssn, 
    i.raceEthnicity, 
    ea.assignmentID, 
    ea.startDate, 
    MIN(e.startdate) AS DistrictStart, 
    ea.endDate, 
    ea.title, 
    ea.type, 
    ea.teache, 
    ea.specialEd, 
    ea.behavior, 
    ea.health, 
    ea.advisor, 
    ea.supervisor, 
    ea.foodservice, 
    ea.departmentID, 
    s.schoolID, 
    s.name schoolName, 
    s.number schoolNumber, 
    d.name departmentName, 
    ea.excludeReferral, 
    ea.counselor 
FROM  dbo.Person p WITH (NOLOCK) 
    INNER JOIN dbo.[Identity] i WITH (NOLOCK) 
    ON  p.currentIdentityID = i.identityID 
    INNER JOIN dbo.Employment e 
    ON  e.personID = p.personID 
    INNER JOIN dbo.EmploymentAssignment ea WITH (NOLOCK) 
    ON  p.personID = ea.personID 
    INNER JOIN dbo.School s WITH (NOLOCK) 
    ON  s.schoolID = ea.schoolID 
    LEFT OUTER JOIN dbo.Department d WITH (NOLOCK) 
    ON  d.departmentID = ea.departmentID 
GROUP BY e.startdate, 
    p.personID, 
    p.stateID, 
    p.staffNumber, 
    p.staffStateID, 
    i.identityID, 
    i.effectiveDate, 
    i.lastName, 
    i.firstName, 
    i.middleName, 
    i.suffix, 
    i.alias, 
    i.gender, 
    i.birthdate, 
    i.ssn, 
    i.raceEthnicity, 
    ea.assignmentID, 
    ea.startDate, 
    ea.endDate, 
    ea.title, 
    ea.type, 
    ea.teacher, 
    ea.specialEd, 
    ea.behavior, 
    ea.health, 
    ea.advisor, 
    ea.supervisor, 
    ea.foodservice, 
    ea.departmentID, 
    s.schoolID, 
    s.name, 
    s.number, 
    d.name, 
    ea.excludeReferral, 
    ea.counselor 
+2

おっと!あなたはそれをAccessからコピーしましたか?おそらく、正しい句読点と大文字で質問してみるべきでしょう。 –

+1

可能性が高いSQLサーバー。アクセスは、複数のレベルのネストされた '()'ペアにジョインを入れ、 '[]'をすべてのフィールド名の周りに置き、そうでなければそれを読みにくくするでしょう。 –

+0

TSQLのようです。どのSQL変種ですか? – Trinidad

答えて

1

あなたのグループからe.startdateを取り出す必要があります。あなたの質問であなたはMIN(e.startdate)を取っていますが、それをグループ化しても何もしません。以下は、私が意味することを示すための簡単な例です:

select '20110101' as StartDate 
into #DatesExample 
union select '20110102' as StartDate 
union select '20110103' as StartDate 

select min(StartDate) 
from #DatesExample 
group by StartDate 

select min(StartDate) 
from #DatesExample 
関連する問題