0

私はレポートデータベースを構築しており、要件の一部は、1:Mの関係をフラット化するために複数のブール列を作成することです。次に例を示します。

表1はスタディテーブルであり、一意のIDがあります。

表2は言語テーブルであり、表1と1:多くの関係があります。

Study Table
Id    Name
1     Study1
2     Study2
3     Study3

LanguageTable
StudyId    Language
1          English
1          French
1          Chinese
2          French
3          Chinese

レポートテーブルに、 IsInEnglishIsinEuropeanLanguageなどの列をいくつか入れたい。

Study Language Report
StudyId      IsInEnglish        IsInEuropeanLanguage
1            true               true                   
2            false              true
3            false              false

表1と表2を指定して、このテーブルを生成するSQLクエリを作成するにはどうすればよいですか?

4

1 に答える 1

1
   select s.StudyId,
          max(case when Language='English' then 1 else 0 end) IsInEnglish,
          max(case when Language in ('English','French') then 1 else 0 end) IsInEuropeanLanguage
     from study s
left join languages l on s.studyid = l.studyid
 group by s.studyid
于 2012-12-06T23:18:28.000 に答える