【发布时间】:2021-01-24 11:49:30
【问题描述】:
对于表格课程中的成本列值,请尝试将成本值转换为一个成本值发生次数的表格,例如 1095 美元发生 3 次。
1095 1195 1595 NULL
---------- ---------- ---------- ----------
3 25 1 1
成本价值
select cost from course
order by cost;
COST
----------
1095
1095
1095
1195
...
1195
1595
NULL
这行得通。
WITH counter AS (
SELECT
cost
FROM course
)
select * from counter
pivot (
count(*)
for (cost)
in (1095, 1195, 1595, NULL)
);
1095 1195 1595 NULL
---------- ---------- ---------- ----------
3 25 1 1
这不是。
select cost from course
pivot (
count(*)
for (cost)
in (1095, 1195, 1595, NULL)
);
ORA-00904: "COST": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 178 Column: 8
问题
在我看来,既选择了cost,又选择了count(*),但前者有效,后者无效。请帮助理解原因。
【问题讨论】:
-
因为在旋转后,您的所有成本都被分配到具有成本金额的列中,并且不再有
cost列。您可以使用select *观察它,它会显示您拥有的所有列。