sql - Oracle SQL 显示每行中两个列值的特定组合的结果
问题描述
我想就以下问题寻求帮助。我有每次随机生成的表。在该表中,如果组和类型组合的出现次数超过 0,我想显示信息。
例如这是随机生成的表:
团体 | 类型 |
---|---|
一种 | 吨 |
一种 | 吨 |
C | 磷 |
乙 | 吨 |
一种 | 磷 |
C | 磷 |
我想看看,如果每组 T 类型的出现次数超过 0 次。
所以在这种情况下,组“A”有超过 0 次出现类型“T”,所以每行将显示组 A 的“1”。组“B”和组“C”没有出现类型“T” ,因此 C 的每一行将在附加列中显示 0。像下面的结果:
团体 | 类型 | RES |
---|---|---|
一种 | 吨 | 1 |
一种 | 吨 | 1 |
C | 磷 | 0 |
乙 | 吨 | 1 |
一种 | 磷 | 1 |
C | 磷 | 0 |
是否有请查询,可以解决这个问题?
先感谢您,
引流
解决方案
您可以在分析函数中使用条件聚合:
SELECT t.*,
LEAST(
COUNT(CASE type WHEN 'T' THEN 1 END) OVER (PARTITION BY "GROUP"),
1
) AS res
FROM table_name t
其中,对于样本数据:
CREATE TABLE table_name ( "GROUP", TYPE ) AS
SELECT 'A', 'T' FROM DUAL UNION ALL
SELECT 'A', 'T' FROM DUAL UNION ALL
SELECT 'C', 'P' FROM DUAL UNION ALL
SELECT 'B', 'T' FROM DUAL UNION ALL
SELECT 'A', 'P' FROM DUAL UNION ALL
SELECT 'C', 'P' FROM DUAL
输出:
团体 类型 RES 一种 磷 1 一种 吨 1 一种 吨 1 乙 吨 1 C 磷 0 C 磷 0
db<>在这里摆弄
推荐阅读
- firebase - 从 firebase 函数获取云存储中文件的永久可公开下载 URL
- java - 将 Java 类映射到 Morphia 2
- java - 来自 application.properties 的 Mapstruct 值
- python - 当我在 Heroku 控制台中运行 python manage.py makemigrations 时,Heroku 无法识别我的迁移
- c++ - 删除 cmake --build 中的“note:”级别
- javascript - 如何在svg圆内渲染n个切片?
- javascript - 如何在没有 eval 的情况下使用/解析生成的 js 文件?
- wordpress - WordPress 导航栏下拉菜单
- javascript - HTML视频自动下载
- python - 使用fluentbit解析python多行回溯到一行