C# 如何在 Ms Access 中按 Transform/Pivot 排序?
C# How do I Order By my Transform/Pivot in Ms Access?
使用此代码:
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 clause conflicts with Order by clause" 错误。如果不允许此操作,我该如何订购我的数据透视表?
注意我用的是IIF而不是case,这是因为MS Access不能像其他数据库那样使用。
我打算做的就是让我的数据透视表的最后几行遵循正确的模式。
在查询中构造一个名为 [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 中的另一个行标题。
我假设您已经查找了 table 这些用作数据记录输入来源的预算项目。此序列号可能是该查找中的另一个字段 table。将 table 加入 CROSSTAB 以拉入序列号。您是否将实际的描述性文本保存到您的数据记录中,而不是来自查找 table 的 PK?重复此文本将更快地用完 Access 2GB 限制,但这可能仍需要很长时间,具体取决于您的数据量。此外,在对数字数据进行联接时,联接的执行效率应该会更高。
使用此代码:
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 clause conflicts with Order by clause" 错误。如果不允许此操作,我该如何订购我的数据透视表?
注意我用的是IIF而不是case,这是因为MS Access不能像其他数据库那样使用。
我打算做的就是让我的数据透视表的最后几行遵循正确的模式。
在查询中构造一个名为 [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 中的另一个行标题。
我假设您已经查找了 table 这些用作数据记录输入来源的预算项目。此序列号可能是该查找中的另一个字段 table。将 table 加入 CROSSTAB 以拉入序列号。您是否将实际的描述性文本保存到您的数据记录中,而不是来自查找 table 的 PK?重复此文本将更快地用完 Access 2GB 限制,但这可能仍需要很长时间,具体取决于您的数据量。此外,在对数字数据进行联接时,联接的执行效率应该会更高。