group并在sql中包含所有类别

hec6srdp  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(298)

我需要为每个类别选择表中的所有组,即使给定类别缺少该组(并将0或null作为值),我也需要通过sql查询(impala)来执行此操作。
下面是一个示例(基本上我还需要动态显示第二个表中的最后一行)。

Category     Group     Amount              Category     Group     Amount
+--------------------------------+          +--------------------------------+
   A           X          1                    A           X          1
   A           Y          2                    A           Y          2
   A           Z          5           ->       A           Z          5
   B           X          2                    B           X          2
   B           Y          3                    B           Y          3
                                               B           Z          0

有人知道如何做到这一点吗?谢谢!

eh57zj3b

eh57zj3b1#

您需要先交叉连接类别和组,然后左连接:

select c.category, g.group, coalesce(amount, 0)
from
 ( -- all categories
   select distinct Category from tab
 ) as c
cross join -- create all possible combinations
 ( -- all groups
   select distinct group from tab
 ) as g
left join tab as a -- now join back the amount
  on c.category = a.category
 and g.group = a.Group

相关问题