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))
在 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))