使用此代码:
TRANSFORM SUM(Amount) SELECT DISTINCT IS_Accounts FROM [TABLE] GROUP BY IS_Accounts PIVOT Status
我能够为我的目的创建一个迷你报告摘要,它是从一个只有重要内容的更大的数据库生成的。
但是,“帐户”列全部无序,其中一些优先级高于其他列。为此,我编写了一个查询并在主数据库上对其进行了测试。
" ORDER BY IIf([IS_Accounts] = 'Revenues' , 1 , IIf([IS_Accounts] = 'Cost of Services', 2 , IIf([IS_Accounts] = 'Operating Expenses', 3, IIf([IS_Accounts] = 'Other income/expense', 4, IIf([IS_Accounts] = 'Income Taxes', 5, 6))))) ASC ");
当我在我的主数据库上运行它时,它正确地按收益排在顶部,其余按模式建议排序,但是将其插入到我的Transform / Pivot查询中,我遇到了一个" Group by子句冲突with order by clause"错误。如果不允许此操作,我该如何订购透视数据?
请注意,我使用IIF而不是大小写,这是因为MS Access与其他数据库不同时无法使用。
我打算做的就是让我的枢轴的最后一行遵循正确的模式。
答案 0 :(得分:1)
使用表达式
在查询中构造一个名为[Sort](或任何你想要的)的字段 Switch([IS_Accounts] = 'Revenues', 1, [IS_Accounts] = 'Cost of Services', 2, [IS_Accounts] = 'Operating Expenses', 3, [IS_Accounts] = 'Other income/expense', 4, [IS_Accounts] = 'Income Taxes', 5, True, 6)
现在将该字段指定为CROSSTAB中的另一个RowHeading。
我认为您已经拥有这些预算项目的查找表,这些预算项目用作输入数据记录的来源。该序列号可以是该查找表中的另一个字段。将表格加入CROSSTAB以输入序列号。您是否将实际描述性文本保存到数据记录中而不是查找表中的PK?重复此文本将更快地使用Access 2GB限制,但这可能仍需要很长时间,具体取决于您的数据量。此外,当对数字数据进行连接时,连接应该更有效。