sql - 计数 SELECT DISTINCT LISTAGG
问题描述
我想知道如何计算子查询/值'HANDLING_UNIT_ID'下面是我目前拥有的:
COUNT (SELECT DISTINCT LISTAGG(HANDLING_UNIT_ID, ',') WITHIN GROUP(ORDER BY HANDLING_UNIT_ID) FROM SHIPMENT_LINE_HANDL_UNIT WHERE ORDER_NO = SL.ORDER_NO) AS QUANTITY
解决方案
您可以COUNT( DISTINCT ... )
在子查询中使用:
SELECT your_outer_values,
( SELECT COUNT( DISTINCT HANDLING_UNIT_ID )
FROM SHIPMENT_LINE_HANDL_UNIT
WHERE ORDER_NO = SL.ORDER_NO ) AS quantity
FROM your_table sl
任何人都可以建议为什么这不起作用?
没有GROUP BY
子句,因此LISTAGG
将处理整个结果集并将其聚合到由所有值的分隔字符串列表组成的单行中HANDLING_UNIT_ID
。由于 then 子句只有一个值,LISTAGG
因此该DISTINCT
子句是多余的,并且COUNT
来自外部查询将始终返回 1。
推荐阅读
- python-3.x - 卡尔曼滤波器基本应用/学习 - 代码似乎很慢
- scala - 使用 OR 逻辑进行模式匹配
- swift - 如何停止 QuartzCore-CABasicAnimation 的动画
- c# - discord.net c# :: user as IGuildUser 返回null?
- arduino - 404 Bad request error by using AT Commands to Send Post and Get Request Using Arduino Serial Monitor
- doxygen - 如何计算 doxygen 中的待办事项列表?
- node.js - Mongoose:访问模式中的自定义存储函数
- ios - iOS 文本意外显示两种不同的日文字体
- python - 在python中为数据框的回归分析创建一个循环
- json - powershell 脚本,用于获取在从 odata 查询 uri 读取 json 文件的应用程序中运行的失败作业的状态