0

我正在构建一个报告数据库,部分要求是创建多个布尔列以展平 1:M 关系。这是一个例子:

表 1 是学习表,具有唯一 ID。

表 2 是语言表,与表 1 具有 1:many 的关系。

Study Table
Id    Name
1     Study1
2     Study2
3     Study3

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

我想在我的报告表中有几列,例如Is In EnglishIs in European Language

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 回答