我需要创建一种方法来显示多列中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
等
我希望这些显示在一个包含一行的表格中,该行会在具有自定义名称的列下显示每种类型的计数。
我的SQL相当稀疏,因此欢迎额外的外部信息。
答案 0 :(得分:2)
听起来您希望 pivot 将行中的数据放入列中。如果在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
或者,如果由于某种原因仍想使用单独的查询,则可以使用UNION 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