0

我需要创建一种方法来在多列中显示来自 SQL 查询的结果。sql非常基本,它是对某种类型的每个条目的计数。

所以SQL就像

Select count(distinct(id)) from Table where id_type = a

Select count(distinct(id)) from Table where id_type = b

Select count(distinct(id)) from Table where id_type = c

ETC

我希望这些显示在一个表中,其中一行将在具有自定义名称的列下给出每种类型的计数。

我的 SQL 相当稀疏,所以总是欢迎额外的外部信息。

4

1 回答 1

2

听起来您希望将数据从行转换为列。如果在 MySQL 中是这种情况,您将需要使用带有CASE表达式的聚合函数来执行此数据转换:

Select 
  count(distinct case when id_type = 'a' then id end) TotalA,
  count(distinct case when id_type = 'b' then id end) TotalB,
  count(distinct case when id_type = 'c' then id end) TotalC
from Table

或者,如果您出于某种原因仍想使用单独的查询,那么您可以使用 aUNION ALL然后将数据旋转到列中:

select 
  max(case when col = 'A' then TotalCount end) TotalA,
  max(case when col = 'B' then TotalCount end) TotalB,
  max(case when col = 'C' then TotalCount end) TotalC
from
(
  Select count(distinct(id)) TotalCount, 'A' Col
  from Table 
  where id_type = 'a'
  union all
  Select count(distinct(id)) TotalCount, 'B' Col
  from Table 
  where id_type = 'b'
  union all
  Select count(distinct(id)) TotalCount, 'C' Col
  from Table 
  where id_type = 'c'
) src
于 2013-01-14T10:50:10.153 回答