Google表格查询WHERE子句仅返回第一行数据

时间:2019-01-24 09:15:03

标签: sql google-sheets

我有一张工作表,试图用来显示许多科目的学生成绩概览,每个学生及其成绩都放在单独的行中。

概述

  • 学生ID,英语,数学等
  • 1,result1,result2等
  • 2,result3,result4等

结果数据来自另一个系统,位于单独的工作表中。每个主题的每个结果都是单独的一行,其中第一列是学生ID,第二列是主题,第三列是结果。

结果集

  • 1,英语,结果1
  • 1,MATHS,结果2

我一直在尝试这样的各种形式的查询 =query(RESULTSET!A1:C,"SELECT C WHERE A = '1' AND B = 'ENGLISH'",1),但查询仅返回RESULTSET中第一行数据的第一个结果。

这是指向包含数据和查询的测试电子表格的链接,该数据重复出现此问题:https://docs.google.com/spreadsheets/d/15xLAyHumL2pC8mRfA4Qs9xMyrWZvK86kmoi2kBWnB34/edit?usp=sharing

我希望从结果集中看到与每个学生ID和科目匹配的结果,但是我只会看到第一个结果,而不论ID或科目如何。

1 个答案:

答案 0 :(得分:0)

删除对A列的引用周围的单引号,并将query()中的headers参数设置为零。在B2中尝试

=iferror(query('result set 1'!$A$1:$C58,"SELECT C WHERE A = "&$A2&" AND B = '"&UPPER(B$1)&"'",0))

根据需要向右和向下填充,看看是否可行?

另一种选择是在B2中使用

=ArrayFormula(iferror(vlookup($A$2:$A$8&B$1, {'result set 1'!$A:$A&'result set 1'!$B:$B, 'result set 1'!$C:$C}, 2, 0)))

并向右填充(确保第2行下方没有数据)。