Oracle查询:找出对应相同Column C值的Column A值
解决方案:查询Oracle表中相同Column C值对应的Column A值
假设你的表名为your_table_name,根据需求的不同,提供以下几种查询方案:
1. 聚合显示每个C值对应的所有A值(含重复)
将同一Column C值下的所有Column A值拼接成字符串,方便查看对应关系:
SELECT Column_C, LISTAGG(Column_A, ', ') WITHIN GROUP (ORDER BY Column_A) AS associated_a_values FROM your_table_name GROUP BY Column_C;
执行结果示例(对应你提供的测试数据):
| Column_C | associated_a_values |
|---|---|
| 1000 | Cell 1, Cell 1, Cell 2 |
| 2000 | Cell 3 |
| 3000 | Cell 2 |
2. 聚合显示每个C值对应的唯一A值
如果需要去掉同一C值下重复的A值,在LISTAGG中加入DISTINCT:
SELECT Column_C, LISTAGG(DISTINCT Column_A, ', ') WITHIN GROUP (ORDER BY Column_A) AS unique_a_values FROM your_table_name GROUP BY Column_C;
执行结果示例:
| Column_C | unique_a_values |
|---|---|
| 1000 | Cell 1, Cell 2 |
| 2000 | Cell 3 |
| 3000 | Cell 2 |
3. 逐行列出每个C值对应的A值
以行记录的形式展示所有C与A的对应关系,按C值排序:
SELECT Column_C, Column_A FROM your_table_name ORDER BY Column_C, Column_A;
4. 仅找出对应多个不同A值的C及其关联A值
如果只关注那些存在至少两个不同A值的Column C,可使用子查询过滤:
SELECT Column_C, Column_A FROM your_table_name WHERE Column_C IN ( SELECT Column_C FROM your_table_name GROUP BY Column_C HAVING COUNT(DISTINCT Column_A) > 1 ) ORDER BY Column_C, Column_A;
此查询仅返回C=1000对应的所有A值记录。
内容的提问来源于stack exchange,提问作者9064505
相关产品推荐
相关产品推荐

