且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何使用一个SQL查询获取多个计数?

更新时间:2023-01-30 08:09:24

您可以使用带有聚合函数的 CASE 语句。这基本上与某些RDBMS中的 PIVOT 函数相同:

  select bos()当然,如果level ='个人',那么这个值就是1。 else 0 end)PersonalCount 
from yourtable
group by distributor_id


I am wondering how to write this query.

I know this actual syntax is bogus, but it will help you understand what I am wanting. I need it in this format, because it is part of a much bigger query.

SELECT distributor_id, 
COUNT(*) AS TOTAL, 
COUNT(*) WHERE level = 'exec', 
COUNT(*) WHERE level = 'personal'

I need this all returned in one query.

Also, it need to be in one row, so the following won't work:

'SELECT distributor_id, COUNT(*)
GROUP BY distributor_id'

You can use a CASE statement with an aggregate function. This is basically the same thing as a PIVOT function in some RDBMS:

select distributor_id,
    count(*) total,
    sum(case when level = 'exec' then 1 else 0 end) ExecCount,
    sum(case when level = 'personal' then 1 else 0 end) PersonalCount
from yourtable
group by distributor_id