数据透视表错误 56901 非常量表达式

Posted

技术标签:

【中文标题】数据透视表错误 56901 非常量表达式【英文标题】:Pivot Table Error 56901 non-constant expression 【发布时间】:2014-11-05 01:24:19 【问题描述】:

我需要使用employees2 表中的数据在Division_ID 作为行和Job_ID 作为列创建一个平均工资数据透视表。到目前为止,我有:

SELECT * 
FROM (
SELECT Division_ID, Salary, Job_ID
FROM Employees2
)
PIVOT (
AVG(Salary) FOR Job_ID IN (ENG, TEC, MGR)
)
ORDER BY Job_ID

我收到错误,“pivot|unpivot values 不允许非常量表达式”

我做错了什么?我可以在网上找到的大多数示例都在 IN 语句之后处理数值,我是否需要做一些不同的事情,因为我正在使用文本/字符串?

【问题讨论】:

Job_ID 是 varchar 不是吗?将它们放在单引号中。 Job_ID IN ('ENG', 'TEC', 'MGR') 【参考方案1】:

使用下面的查询。

SELECT *    FROM (
    SELECT Division_ID, Salary, Job_ID
    FROM Employees2
)  
PIVOT 
(
     AVG(Salary) FOR Job_ID IN 
    ('ENG', 'TEC', 'MGR')     ------------> Change done here.....
)
ORDER BY Job_ID

ENGTECMGR 需要用单引号括起来才能被视为常量值。

【讨论】:

以上是关于数据透视表错误 56901 非常量表达式的主要内容,如果未能解决你的问题,请参考以下文章

ABAP 内表数据汇总问题 求助

如何编写DAX表达式创建透视表

多维透视表 - 矩表实现商品销售对比统计

Excle如何隐藏数据透视表中的错误值

Excel-数据透视表

多维透视表 - 矩表实现商品销售对比统计