sql - 在Oracle中以逗号分隔的列中获取唯一长度的可用数据
问题描述
需要获取以逗号分隔的列中可用数据的唯一长度。已尝试以下查询,但收到错误提示
ORA-00936: missing expression 00936. 00000 - "missing expression" *Cause: *Action: Error at Line: 2 Column: 16
使用的查询
SELECT LISTAGG(
SELECT DISTINCT LENGTH(ColumnName)
FROM TableName
WHERE LENGTH(ColumnName) NOT BETWEEN 6 AND 10) AS AliasName, ','
) within group (order by ColumnName)
FROM DUAL;
下面的查询错误说
ORA-30482: DISTINCT option not allowed for this function 30482. 00000 - "DISTINCT option not allowed for this function" *Cause: *Action: Error at Line: 1 Column: 8
SELECT LISTAGG(DISTINCT LENGTH(ColumnName), ',') within group (order by LENGTH(ColumnName))
FROM TableName
WHERE LENGTH(ColumnName) NOT BETWEEN 6 AND 10;
请帮助我。
解决方案
以下查询提供所需的结果。
SELECT listagg(AliasName, ',') within group (order by AliasName) AS NewAliasName
FROM (
SELECT DISTINCT LENGTH(ColumnName) AS AliasName
FROM TableName
WHERE LENGTH(ColumnName) NOT BETWEEN 6 AND 10
);
我能得到比这更好的查询吗?
推荐阅读
- reactjs - 为什么使用formik useField时不显示错误?
- c# - 我想用 xamarin.forms 获得每帧的当前位置
- discord - 如何避免我的不和谐机器人在 DM 中计算他自己的消息?
- django - django 序列化器和视图究竟是如何协同工作的?以及如何使用我的查询集将其他数据返回到前端?
- python - 为什么我的弹丸“hprojectile”不动?
- javascript - 如何获取并返回静态 geojson?
- javascript - Typo3 中未调用 RequireJS 回调
- groovy - 在 Groovy 中以相反的顺序(Last shall be First)显示日志文件的内容
- ios - 鉴于我设置的约束,为什么 UILabel 的文本不会截断?
- bash - 如何保持中间容器在 Docker 中运行?