sql - 在 4 行之后对所有行进行分组并创建第 5 行分组行
问题描述
我有一个查询:
SELECT *
FROM (
SELECT WORKING_DAYS, ACTIVITY
FROM TABLE
)
PIVOT (
COUNT(ACTIVITY)
FOR ACTIVITY IN (
6 AS NL6,
7 AS NL7,
8 AS NL8,
9 AS NL9,
11 AS NL11
)
)
ORDER BY WORKING_DAYS;
上述查询的输出如下:
我试图输出如下,但我不知道如何继续:
任何人都可以在这里提供帮助并让我知道最好的解决方案吗?
我正在使用 Oracle 版本 - 12.1.0.2
解决方案
使用条件聚合更容易做到这一点:
select
case when working_days > 4 then '> 4' else to_char(working_days) end as working_days,
sum(case when activity = 6 then 1 else 0 end) nls6,
sum(case when activity = 7 then 1 else 0 end) nls7,
sum(case when activity = 8 then 1 else 0 end) nls8,
sum(case when activity = 9 then 1 else 0 end) nls9
sum(case when activity = 11 then 1 else 0 end) nls11
from mytable
group by case when working_days > 4 then '> 4' else to_char(working_days) end
推荐阅读
- arrays - VBA Array 将多个 CSV 复制到一个模板工作簿
- bash - 如何使用 bash 操作 jq 输出?
- javascript - 按唯一 ID 添加/显示每一行
- python - 我如何使用 Apache 基本上从根本上运行 python 脚本?
- visual-studio - 从自动生成输出目录停止 Visual Studio 2017
- adsense - 我应该为博客使用动态页面还是实际文件?
- rest - 模拟 REST,如何将二进制文件附件从客户端请求保存到文件系统?
- nginx - NGINX 没有为 Parse Server 和 Socket.io 打开端口
- scala - Spark Scala Kmeans - 如何标记结果和可视化?
- routes - 如何规划具有分隔部分的页面的路线