在表上使用 Pivot 函数时出现缺少逗号错误
Posted
技术标签:
【中文标题】在表上使用 Pivot 函数时出现缺少逗号错误【英文标题】:Getting missing comma error when using Pivot function on a table 【发布时间】:2019-10-23 09:49:06 【问题描述】:我正在创建一个简单的枢轴,但我得到 ORA-00917:在枢轴函数存在的行(第三行)上缺少逗号错误。请帮忙。
不知道还有什么可以尝试的,因为语法似乎是正确的,因为我是枢轴函数的新手。
SELECT venue, notional
FROM ABC
pivot (sum(notional) FOR (venue) IN ('A' as A1 , 'B' as B1));
预期的结果是 A1 和 B1 显示它们各自的概念。
【问题讨论】:
【参考方案1】:您不需要子查询。 ABC
表中的列 venue
和 notional
已被转置并且不再存在于输出结果集中,因此 SELECT
子句将找不到这些列。
取而代之的是 SELECT
a1
和 b1
您已旋转的列:
测试数据:
CREATE TABLE abc ( id, venue, notional ) AS
SELECT 1, 'A', 1 FROM DUAL UNION ALL
SELECT 1, 'A', 2 FROM DUAL UNION ALL
SELECT 1, 'A', 3 FROM DUAL UNION ALL
SELECT 1, 'B', 1 FROM DUAL UNION ALL
SELECT 1, 'B', 2 FROM DUAL UNION ALL
SELECT 2, 'B', 3 FROM DUAL;
查询:
SELECT id, a1, b1 -- you can't use venue or notional here as they've been pivoted.
FROM ABC
pivot (sum(notional) FOR (venue) IN ('A' as A1 , 'B' as B1));
输出:
身份证 | A1 | B1 -: | ---: | -: 1 | 6 | 3 2 | 空 | 3
db小提琴here
【讨论】:
【参考方案2】:您似乎错过了 PIVOT 函数之前的子查询 -
SELECT *
FROM (SELECT venue, notional
FROM ABC
)
PIVOT (
SUM(notional) FOR (venue) IN ('A' as A1 , 'B' as B1)
);
【讨论】:
另一个与此相关的问题。我们可以在做一个数据透视时有多个 IN 子句,例如假设我想做这个 ``` PIVOT ( SUM(notional) FOR (venue) IN ('A' as A1 , 'B' as B1) AND (type ) IN ('素数')); ```` 类型是我想包含在枢轴中的另一列 您必须为此添加另一个完整的 PIVOT 子句。 ```````````````` SELECT * FROM(选择场地,type_,名义上的来自ABC)PIVOT(SUM(名义上)FOR(场地)IN(' A' 作为 A1 ,'B' 作为 B1) ) PIVOT ( SUM(notional) FOR (type_) IN ('Prime') ); `````````````````````````` 试过了,但是名义上的标识符无效 我想你可以用你的示例数据和你的预期结果发布新问题。以上是关于在表上使用 Pivot 函数时出现缺少逗号错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 CreateThread 调用类函数时出现错误 C3867
运行matlab时出现这个错误。是啥意思Error: Missing operator, comma, or semicolon.