我有一张类似这样的表:
Name Alice Bob Carl Dan ...
Foo 2 2 0 1
Bar 1 2 2 0
...
我想要的是制作一个视图(或只是做一个查询),它会告诉我Alice,Bob等等列中有多少0,1和2。所以我想得到一个看起来像这样的表:
Name 0s 1s 2s
Alice 5 2 3
Bob 7 1 4
Carl 3 ...etc.
我该怎么做?单元格中的值只能是0,1或2,因此对于任意数据都不需要是通用的。我需要做的表有大约70列和1250行。
答案 0 :(得分:1)
使用您拥有的数据结构相当痛苦。基本上,你可以做这样的事情:
select 'Alice' as name, sum(Alice = 0) as Zeros, sum(Alice = 1) as Ones, Sum(Alice = 2) as Twos
from table t
union all
select 'Bob' as name, sum(Bob = 0) as Zeros, sum(Bob = 1) as Ones, Sum(Bob = 2) as Twos
from table t
union all
. . .
也就是说,为输出中的每一行创建一个子查询。
注意:这可能是实现您想要的最简单方法。如果您有一个大表,可能有其他方法表现更好。
此外,您可以使用电子表格为每个子查询生成代码。这可以使编写查询更容易。
编辑:
使用三列构建表格会好得多:
然后你可以通过条件聚合相对容易地做到这一点。