Google 工作表 - 查询数据透视表 - 显示所有结果

Google Sheets - Query Pivot - show all results

在 google sheets 中有一个主元 table,其列的文本日期范围为 1-30、31-60、61-90、90-120、>120,其中一些记录属于那些日期范围。

这是示例数据:

Unique Account Doc Amount Day Range
1 123456 1000 1-30
2 561530 2000 >120
3 123456 1500 61-90
4 25106 3000 1-30

我可以使用标准数据透视表 tables 使这些数据进行数据透视,但用户需要在没有数据透视表 table 按钮和格式的情况下保持干净。我正在尝试转换为 google 查询函数,但我很困惑。我可以尝试选择旋转,然后将旋转调用到查询中以删除格式,但这似乎是多余的,而且我的 sheet 中还发生了很多其他事情,所以害怕更新速度变慢。

最终结果如下图所示,其中日期范围已旋转且每条记录显示金额。

所有列都需要保留,就好像有空值一样,所有结果甚至显示 null/zero 金额的值,因为列 31-60 和 91-120 显示没有结果的列。我使用一个唯一的 id 来确保所有记录作为

的一部分返回

我可以通过以下方式获取查询:

=query(rawdata,"Select Z,B,E,D,F,H,J, Sum(N) where B="&$C$31&" Group by Z,B, E,D,F,H,J 主元 AA 按 F",1)

排序

但是,如果 B 上的过滤器只有一些日期范围而没有其他日期范围,则它只会显示那些包含数据的列。

Link 到 google sheet 示例数据:

https://docs.google.com/spreadsheets/d/1seX4T3M8Mo9eVZYteyAbUG2zmWM9VCZ2-6oDd76QMA8/edit?usp=sharing

结果查询:

Unique Account Doc 1-30 31-60 61-90 91-120 >120
1 123456 1000
2 561530 2000
3 123456 1500
4 25106 3000

尝试:

=ARRAYFORMULA(QUERY(QUERY({'Copy of raw data'!A:AA; IFERROR(VLOOKUP(
 SEQUENCE(COUNTA(UNIQUE('Copy of raw data'!B2:B)&TRANSPOSE(UNIQUE('Copy of raw data'!AA2:AA)))), {
 SEQUENCE(COUNTA(UNIQUE('Copy of raw data'!B2:B)&TRANSPOSE(UNIQUE('Copy of raw data'!AA2:AA)))), 
 SPLIT(FLATTEN(UNIQUE('Copy of raw data'!B2:B)&"×"&TRANSPOSE(UNIQUE('Copy of raw data'!AA2:AA))), "×"), 
 TO_TEXT(SPLIT(FLATTEN(UNIQUE('Copy of raw data'!B2:B)&"×"&TRANSPOSE(UNIQUE('Copy of raw data'!AA2:AA))), "×"))}, 
 {0, 2, SEQUENCE(1, 24, 0, 0), 5}, 0))},
 "select Col26,Col2,Col5,Col4,Col6,Col8,Col10,sum(Col14) 
  where 1=1 "&IF(B1="",, " and Col2="&B1)&"
  group by Col26,Col2,Col5,Col4,Col6,Col8,Col10 
  pivot Col27 
  order by Col6", 1), "where Col1 is not null", 1))