输出需要通过一个查询来实现
Posted
技术标签:
【中文标题】输出需要通过一个查询来实现【英文标题】:output need to achieve by one query 【发布时间】:2021-04-05 03:40:12 【问题描述】:我有一个包含如下数据的表格。
Tran_id status
abc d
xyz f
mnp d
klm s
anz f
我需要枢轴输出:
Total No Of d: 2
Total No Of f: 2
Total No. Of s: 1
Total no Of Status : 5
我可以通过单独的查询轻松实现,但是否可以通过一个查询完成?
【问题讨论】:
【参考方案1】:您不是在描述一个数据透视表,而是一个带有汇总的聚合查询。看起来像:
select status, count(*) as cnt
from mytable
group by rollup (status)
【讨论】:
【参考方案2】:你可以使用条件聚合比如
SELECT SUM(CASE WHEN status='d' THEN 1 ELSE 0 END) AS "Total # Of D",
SUM(CASE WHEN status='f' THEN 1 ELSE 0 END) AS "Total # Of F",
SUM(CASE WHEN status='s' THEN 1 ELSE 0 END) AS "Total # Of S",
COUNT(*) AS "Total # Of Status"
FROM tab
为了返回旋转的结果。
【讨论】:
【参考方案3】:您还可以在 group by 子句中使用 grouping sets 子句来创建自己的 group by 子集,如下所示
select 'Total No Of '||nvl(to_char(status), 'Status') ||': '|| count(*)
from your_tab
group by grouping sets (status, ())
;
【讨论】:
以上是关于输出需要通过一个查询来实现的主要内容,如果未能解决你的问题,请参考以下文章