Google sheets GoogleSheets透视表:显示没有数据的项目

Google sheets GoogleSheets透视表:显示没有数据的项目,google-sheets,google-query-language,Google Sheets,Google Query Language,我正在尝试找到正确的google查询语法,以便为源数据中存在的每个行元素显示一个透视列,即使在应用了“where”子句之后没有数据。这样,生成的数据透视表将始终具有相同的列宽,从而可以基于列对数据执行进一步的计算 这相当于在Microsoft Excel中创建透视表并选择“显示无数据项”选项 以下是当前代码: =query(Memberships!A:P,"SELECT E,COUNT(H) where J >=1 group by E PIVOT B") 代码应该是什么来产生我想要的结

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

这相当于在Microsoft Excel中创建透视表并选择“显示无数据项”选项

以下是当前代码:

=query(Memberships!A:P,"SELECT E,COUNT(H) where J >=1 group by E PIVOT B")
代码应该是什么来产生我想要的结果


我可以使用查询语句,也可以使用Google Sheets pivot功能(如果有办法的话)。

如果要包含WHERE子句排除的行,则有必要使用WHERE以外的其他内容。一种典型的解决方法是添加一个列,该列具有
数组形式(N(J:J>=1))
,其中满足条件的行中有1,其他行中有0。选择该列的
sum()
,以代替
count()
。结果是零计数返回为0;因此,相应的行被保留并在pivot中使用

例如,可以动态添加额外的列

=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
的第二个参数故意留空。

Wow。谢谢你,扎克。