获取列中可用数据的唯一长度,在 Oracle 中用逗号分隔
Get unique length of data available in a column with comma separated in 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
);
我能得到比这更好的查询吗?
我只是想知道为什么要将值转换为单个字符串。为什么不 return 多行:
SELECT LENGTH(ColumnName)
FROM TableName
WHERE LENGTH(ColumnName) NOT BETWEEN 6 AND 10;
GROUP BY LENGTH(ColumnName) ;
这将允许您添加一个额外的列来计算具有特定长度的行数。
需要获取列中可用数据的唯一长度,以逗号分隔。已尝试以下查询但收到错误提示
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
);
我能得到比这更好的查询吗?
我只是想知道为什么要将值转换为单个字符串。为什么不 return 多行:
SELECT LENGTH(ColumnName)
FROM TableName
WHERE LENGTH(ColumnName) NOT BETWEEN 6 AND 10;
GROUP BY LENGTH(ColumnName) ;
这将允许您添加一个额外的列来计算具有特定长度的行数。