首页 > 解决方案 > 谷歌电子表格查询 IF(ISBLANK(), PARSE_ERROR:

问题描述

通过这个查询,我得到了这个结果。这个想法是我有销售产品的日期。当检查日期是否在marketing 表的date_start 和date_end 之间时,如果是,则将该价格放入marketingprice 中。

在某些情况下,没有尽头。这意味着它仍在运行并且没有结束日期。我们仍然使用它们。因为没有结束日期,所以我想使用今天的日期。因此,如果 E (date_end) 为空,则使用今天的日期,否则使用 E

=query(Marketing!$B$2:E,
"select C,D  where  B='" & D2 & "' and 
D<=date '"&TEXT(E2,"yyyy-MM-dd")&"' and 
date'"&TEXT(today(),"yyyy-MM-dd")&"'>=date '"&TEXT(E2,"yyyy-MM-dd")&"' ")

+------------+---------------+--------+-----------------+----------+----------------+
| product_no | product_price | amount | deliver_country |  datum   | marketingprice |
+------------+---------------+--------+-----------------+----------+----------------+
|       1001 |           2.8 |      2 | de              | 2-1-2020 |                |
+------------+---------------+--------+-----------------+----------+----------------+
+-----+------------+
| 3.2 | 01-01-2020 |
| 1.2 | 02-01-2020 |
+-----+------------+

我想使用 IF(isblank(E),date'"&TEXT(TODAY(),"yyyy-MM-dd")&"', E)

然后代码将是

=query(Marketing!$B$2:E,
"select C,D  where  B='" & D2 & "' and 
D<=date '"&TEXT(E2,"yyyy-MM-dd")&"' and 
IF(isblank(E),date'"&TEXT(today(),"yyyy-MM-dd")&"',E)>=date '"&TEXT(E2,"yyyy-MM-dd")&"' ")

然后我得到一个错误:

QUERY: PARSE_ERROR: 在第 1 行第 58 列遇到““IF”。期待以下之一:“(”...“(”...

营销表

+---------+---------+-------+-------------+------------+
| channel | country | price | date_start  |  date_end  |
+---------+---------+-------+-------------+------------+
| Google  | de      |   3.2 | 01-01-2020  | 01-01-2020 |
| Google  | de      |   1.2 | 02-01-2020  |            |
| Amazon  | en      |   5.4 | 01-01-2020  |            |
+---------+---------+-------+-------------+------------+

输出它应该是怎样的

+------------+---------------+--------+-----------------+----------+----------------+
| product_no | product_price | amount | deliver_country |  datum   | marketingprice |
+------------+---------------+--------+-----------------+----------+----------------+
|       1001 |           2.8 |      2 | de              | 2-1-2020 |            1.2 |
|       1002 |           3.8 |      4 | en              | 3-1-2020 |            5.4 |
|       1001 |           2.8 |      1 | de              | 1-1-2020 |            3.2 |
+------------+---------------+--------+-----------------+----------+----------------+

在 mysql 中,我使用以下代码:

b.start_date                <= date(i.system_created)                                           AND   
coalesce(b.end_date,now())  >= date(i.system_created)

我发现自己的解决方案:

=QUERY(Marketing!$B$2:$E;IF(Marketing!E$2:E="";
"select E where  B ='"&D2&"' and D <=date'"&TEXT(E2;"yyyy-MM-dd")&"' and date'"&TEXT(VANDAAG();"yyyy-MM-dd")&"' >=date'"&TEXT(E2;"yyyy-MM-dd")&"' limit 1";
"select E where  B ='"&D2&"' and D <=date'"&TEXT(E2;"yyyy-MM-dd")&"' and E >=date'"&TEXT(E2;"yyyy-MM-dd")&"'"
);0)

标签: arraysif-statementgoogle-sheetsarray-formulasgoogle-sheets-query

解决方案


尝试:

=ARRAYFORMULA(IFERROR(QUERY(
 {Marketing!B$2:D\ IF(Marketing!E$2:E=""; TODAY(); Marketing!E$2:E)}; 
 "select Col2 
  where Col1 = '"&D2&"' 
    and Col3 <= date '"&TEXT(E2;"yyyy-MM-dd")&"' 
    and Col4 <= "&TODAY()&"
  limit 1"; 0)))

推荐阅读