1

我正在尝试找到正确的 google 查询语法,以显示源数据中存在的每个行元素的数据透视列,即使在应用“where”子句后没有数据。这样,生成的数据透视表将始终具有相同数量的列宽,从而可以基于列对数据执行进一步的计算。

这相当于在 Microsoft Excel 中创建数据透视表并选择“显示没有数据的项目”选项。

这是当前代码:

=query(Memberships!A:P,"SELECT E,COUNT(H) where J >=1 group by E PIVOT B")

产生我想要的结果的代码应该是什么?

如果有办法,我可以使用查询语句或 Google 表格数据透视功能。

4

1 回答 1

3

如果要包含 WHERE 子句排除的行,则必须使用 WHERE 以外的内容。一个典型的解决方法是添加一个列,arrayformula(N(J:J>=1))在满足条件的行中将具有 1,而在其他行中将具有 0。该列的选择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故意留空。

于 2017-01-26T02:12:32.700 回答