从DB结果创建自定义表

时间:2013-01-14 10:47:19

标签: sql netezza

我需要创建一种方法来显示多列中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相当稀疏,因此欢迎额外的外部信息。

1 个答案:

答案 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