【问题标题】:Google Sheets Query WHERE clause just returns first row of data谷歌表格查询 WHERE 子句只返回第一行数据
【发布时间】:2019-01-24 18:11:02
【问题描述】:

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

概览

  • 学生证、英语、数学等
  • 1、结果1、结果2等
  • 2、result3、result4 等

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

结果集

  • 1,英文,结果 1
  • 1,数学,结果 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 或科目无关。

【问题讨论】:

  • Remove '' from the int (1) and remove the 1 at the end of the query, that should do it.

标签: sql google-sheets


【解决方案1】:

删除列 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 行下方没有数据)。

【讨论】:

  • =iferror(query('结果集 1'!$A$1:$C58,"SELECT C WHERE A = "&$A2&" AND B = '"&UPPER(B$1)&"' ",0)) 谢谢,效果很好。
猜你喜欢
  • 1970-01-01
  • 2018-06-25
  • 2012-08-04
  • 2022-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多