仅当B不为空时,Google工作表查询B = X

时间:2016-06-16 07:53:09

标签: sql google-sheets

我想根据我可以从下拉菜单中选择的不同字段来查询过滤表格中的某些信息。 (D1,D2,D3,D4)。

此查询有效,但仅限于我指定4个条件。 如果我把D3和D4留空,我想只查询D1和D2标准。

=QUERY(Data!A2:S; 
"select * 
where B = '"&D1&"'    >> only if D1 not empty
and C = '"&D2&"'      >> only if D2 not empty
and G = '"&D3&"'      >> only if D3 not empty
and I = '"&D4&"'      >> only if D4 not empty
" )

2 个答案:

答案 0 :(得分:1)

要在相关输入单元格为空时忽略条件,请使用条件语句将比较列字母替换其内容:

= QUERY(Data!A2:S;
  "select * 
  where B = "  & if(len(D1), "'"&D1&"'", "B") 
  & " and C = " & if(len(D2), "'"&D2&"'", "C")  
  & " and G = " & if(len(D3), "'"&D3&"'", "G")  
  & " and I = " & if(len(D4), "'"&D4&"'", "I")  
  )

这样,如果D1为空,则比较变为" ...其中B = B且......"

答案 1 :(得分:0)

尝试:

=QUERY(Data!A2:S; 
"select * 
where B = '"&IF(D1="","noSuchWordThere", D1)&"'    >> only if D1 not empty
and C = '"&IF(D2="","noSuchWordThere", D2)&"'      >> only if D2 not empty
and G = '"&IF(D3="","noSuchWordThere", D3)&"'      >> only if D3 not empty
and I = '"&IF(D4="","noSuchWordThere", D4)&"'      >> only if D4 not empty
" )