首页 文章

如何在一行中包含多个计数函数和组合

提问于
浏览
0

我试图通过他们的类型和组来满足客户的数量:

GroupName | GroupNotes |计数(Type1)|计数(Type2)|计数(类型3)

但我只能使用以下查询获取组中的groupid,typeid和类型数

SELECT
  CustomersGroups.idCustomerGroup , Customers.type , COUNT(*)
FROM
  CustomersGroups 
    inner Join CustomersInGroup on CustomersGroups.idCustomerGroup = CustomersInGroup.idCustomerGroup
    inner Join Customers on Customers.idCustomer = CustomersInGroup.idCustomer 
Group by 
  CustomersGroups.idCustomerGroup, Customers.type

有没有办法在一行中显示它们(并显示该组的名称?)

1 回答

  • 3

    这是"pivot"查询 . 有些数据库直接支持 pivot 语法 . 总之,您可以使用条件聚合 .

    也许更重要的是,您应该学会使用表别名 . 这些使查询更容易编写和阅读:

    select cg.idCustomerGroup, 
           sum(case when c.type = 'Type1' then 1 else 0 end) as num_type1,
           sum(case when c.type = 'Type2' then 1 else 0 end) as num_type2,
           sum(case when c.type = 'Type3' then 1 else 0 end) as num_type3
    from CustomersGroups cg inner Join
         CustomersInGroup cig
         on cg.idCustomerGroup = cig.idCustomerGroup inner Join
         Customers c
         on c.idCustomer = cig.idCustomer
    Group by cg.idCustomerGroup;
    

相关问题