You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询PIVOT透视数据?筛选轮胎非米其林且包含无轮胎记录车辆

解决方案

方法1:分组聚合查询(更简洁高效,无需使用PIVOT)

直接按汽车名称分组,通过聚合条件做过滤即可满足需求,SQL语句如下:

SELECT car_name
FROM cars
GROUP BY car_name
HAVING COUNT(CASE 
              WHEN part_type = 'Tyre' AND part_name LIKE 'Michelin%' 
              THEN 1 
            END) = 0;

逻辑说明:统计每辆车「存在米其林开头的轮胎记录」的数量,只要该数量为0,就说明车辆要么没有轮胎记录,要么有轮胎但不是米其林开头,完全匹配你的需求。


方法2:使用PIVOT实现(匹配你原先的实现思路)

你原来的PIVOT写法存在语法问题:Oracle的PIVOT语法中FOR子句的枚举值默认不能直接跟动态子查询,需要显式指定枚举值或者使用XML模式,针对当前需求只需要判断轮胎字段即可,写法如下:

SELECT car_name
FROM (
  SELECT car_name, part_type, part_name FROM cars
)
PIVOT (
  LISTAGG(part_name, ',') WITHIN GROUP (ORDER BY part_name)
  FOR part_type IN ('Tyre' AS tyre)
)
WHERE tyre IS NULL OR tyre NOT LIKE 'Michelin%';

执行后返回的结果就是Audi和Mazda,符合预期。

内容的提问来源于stack exchange,提问作者opticyclic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:39:01