Google sheets 使用日期轴和日期顺序进行查询

Google sheets 使用日期轴和日期顺序进行查询,google-sheets,pivot,google-sheets-formula,array-formulas,google-sheets-query,Google Sheets,Pivot,Google Sheets Formula,Array Formulas,Google Sheets Query,我有一个简单的表和查询: 问题是,我无法按日期对列进行排序。我尝试了转置+排序+转置,但它不起作用,因为它将“2019-10-1”放在“2019-9-1”之前(因为它将日期解释为文本)。有什么方法可以将其排序吗?您可以执行以下操作: =ARRAYFORMULA(QUERY(QUERY(A:D; "select B,sum(C),sum(D) where B is not null group by B pivot A"); "select Col1,"&TEX

我有一个简单的表和查询:

问题是,我无法按日期对列进行排序。我尝试了转置+排序+转置,但它不起作用,因为它将“2019-10-1”放在“2019-9-1”之前(因为它将日期解释为文本)。有什么方法可以将其排序吗?

您可以执行以下操作:

=ARRAYFORMULA(QUERY(QUERY(A:D; 
 "select B,sum(C),sum(D) 
  where B is not null 
  group by B 
  pivot A"); 
 "select Col1,"&TEXTJOIN(","; 1; 
  {"Col"&ROW(INDIRECT("A2:A"&COUNTUNIQUE(A2:A)+1))\ 
   "Col"&ROW(INDIRECT("A"&2+COUNTUNIQUE(A2:A)&":A"&COUNTUNIQUE(A2:A)*2+1))})))

如果您想删除该金额:

=ARRAYFORMULA(REGEXREPLACE(TO_TEXT(QUERY(QUERY(A:D; 
 "select B,sum(C),sum(D) 
  where B is not null 
  group by B 
  pivot A "); 
 "select Col1,"&TEXTJOIN(","; 1; 
  {"Col"&ROW(INDIRECT("A2:A"&COUNTUNIQUE(A2:A)+1))\ 
   "Col"&ROW(INDIRECT("A"&2+COUNTUNIQUE(A2:A)&":A"&COUNTUNIQUE(A2:A)*2+1))})));
  " sum "; " "))


在哪里可以添加日期过滤器
,其中a>=日期“2019-07-01”
。我已尝试在第一个块中添加它,但一直出现错误:
“错误无法解析函数查询参数2的查询字符串:NO\u COLUMN:ColXX”


我希望能找到一些不太像MacGyver风格的解决方案,但我会选择:D Thanx.BTW,在哪里可以添加日期过滤器“where a>=日期‘2019-07-01’”。我已经尝试在第一个块中添加它,但是我不断得到错误:“error无法解析函数查询参数2的查询字符串:NO_COLUMN:ColXX”player0,谢谢!但我只是想,几乎不可能有季度和年度小计(横向小计),所以我担心我不得不去静态;(除非你脑子里有一些神奇的公式;)你的意思是,像是把利润和收入的每日、季度和年度列都放在一个公式里?是的。恐怕太多了。因此,基本上,我需要数据透视表的功能(小计),但也需要一些数据透视表没有提供的功能和更具响应性的功能(折叠数据透视表是慢的)。它不需要全部在一个公式中,但我希望它随时间水平增长。
=ARRAYFORMULA(REGEXREPLACE(TO_TEXT(QUERY(QUERY(A:D; 
 "select B,sum(C),sum(D) 
  where B is not null 
    and A >= date '2019-7-1'
  group by B 
  pivot A "); 
 "select Col1,"&TEXTJOIN(","; 1; 
  {"Col"&ROW(INDIRECT("A2:A"&COUNTUNIQUEIFS(A2:A; A2:A; ">="&DATE(2019;7;1))+1))\ 
   "Col"&ROW(INDIRECT("A"&2 +COUNTUNIQUEIFS(A2:A; A2:A; ">="&DATE(2019;7;1))&":A"&
                             COUNTUNIQUEIFS(A2:A; A2:A; ">="&DATE(2019;7;1))*2+1))})));
  " sum "; " "))