Google 工作表数据透视表 table:显示没有数据的项目
Google sheets pivot table: show items with no data
我试图找到正确的 google 查询语法来为源数据中存在的每个行元素显示一个数据透视列,即使在 'where' 之后没有数据条款已适用。这样,生成的主元 table 将始终具有相同的列宽,从而可以根据列对数据执行进一步的计算。
这相当于在 Microsoft Excel 中创建数据透视表 table 并选择 'show items with no data' 选项。
这是当前代码:
=query(Memberships!A:P,"SELECT E,COUNT(H) where J >=1 group by E PIVOT B")
代码应该是什么才能产生我想要的结果?
我可以使用查询语句,或者 Google Sheets 透视功能,如果它有办法的话。
如果要包含被 WHERE 子句排除的行,则需要使用 WHERE 以外的东西。一个典型的解决方法是添加一个带有 arrayformula(N(J:J>=1))
的列,该列将在满足条件的行中包含 1,而在其他行中包含 0。该列的 select sum()
代替 count()
。结果是零计数返回为 0;所以相应的行被保留并在数据透视表中使用。
可以即时添加额外的列,例如
=query({A2:J, N(J2:J>=1)}, "select Col5, sum(Col11) group by Col5 pivot Col2")
其中列现在通过它们在数组中的位置引用 {A2:J, N(J2:J>=1)}
:Col5 是 E,Col2 是 B,Col11 是末尾的额外列。
人们可能会发现不希望出现零。可以使用 If 条件过滤掉它们,尽管这会使公式的长度增加一倍多:
=arrayformula(if(query({A2:J,N(J2:J>=1)}, "select Col5, sum(Col11) group by Col5 pivot Col2") = 0, , query({A2:J,N(J2:J>=1)}, "select Col5, sum(Col11) group by Col5 pivot Col2")))
if
的第二个参数有意留空。
我试图找到正确的 google 查询语法来为源数据中存在的每个行元素显示一个数据透视列,即使在 'where' 之后没有数据条款已适用。这样,生成的主元 table 将始终具有相同的列宽,从而可以根据列对数据执行进一步的计算。
这相当于在 Microsoft Excel 中创建数据透视表 table 并选择 'show items with no data' 选项。
这是当前代码:
=query(Memberships!A:P,"SELECT E,COUNT(H) where J >=1 group by E PIVOT B")
代码应该是什么才能产生我想要的结果?
我可以使用查询语句,或者 Google Sheets 透视功能,如果它有办法的话。
如果要包含被 WHERE 子句排除的行,则需要使用 WHERE 以外的东西。一个典型的解决方法是添加一个带有 arrayformula(N(J:J>=1))
的列,该列将在满足条件的行中包含 1,而在其他行中包含 0。该列的 select sum()
代替 count()
。结果是零计数返回为 0;所以相应的行被保留并在数据透视表中使用。
可以即时添加额外的列,例如
=query({A2:J, N(J2:J>=1)}, "select Col5, sum(Col11) group by Col5 pivot Col2")
其中列现在通过它们在数组中的位置引用 {A2:J, N(J2:J>=1)}
:Col5 是 E,Col2 是 B,Col11 是末尾的额外列。
人们可能会发现不希望出现零。可以使用 If 条件过滤掉它们,尽管这会使公式的长度增加一倍多:
=arrayformula(if(query({A2:J,N(J2:J>=1)}, "select Col5, sum(Col11) group by Col5 pivot Col2") = 0, , query({A2:J,N(J2:J>=1)}, "select Col5, sum(Col11) group by Col5 pivot Col2")))
if
的第二个参数有意留空。