arrays - 谷歌电子表格查询 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)
解决方案
尝试:
=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)))
推荐阅读
- c# - 请求在 WCF IIS 服务器中堆积
- typescript - TypeScript:函数的两种参数类型
- elasticsearch - Logstash 在一天结束时停止解析日志
- c# - 在.net core 2 web api中添加日志中间件,导致http 307和400错误响应
- node.js - Nginx:nodejs堆栈的内部错误500
- eclipse - Eclipse 将进度和错误日志编译为 android studio
- php - 无法在 yii 框架上创建第一个应用程序
- vb.net - 如何删除数据网格中的所有 SQL 行?
- python-3.x - PyYAML 使用重复键加载 YAML 1.1
- html - 选择复选框输入时,在图像上显示复选标记的最简单方法是什么?