Sql 将1个聚合和值的MS Access图扩展为用户选择的最多5个聚合和值
我有一个工作表单,它根据用户在访问表单中选择的值创建访问图报告-创建图形数据的SQL是:Sql 将1个聚合和值的MS Access图扩展为用户选择的最多5个聚合和值,sql,ms-access,graph,aggregate,Sql,Ms Access,Graph,Aggregate,我有一个工作表单,它根据用户在访问表单中选择的值创建访问图报告-创建图形数据的SQL是: SELECT AccountBalances.RecDate, Sum(AccountBalances.[End Balance]) AS [SumOfEnd Balance], CombinedFSLineItems.[CFS LineDescription] FROM (CombinedFSLineItems INNER JOIN AccountNumbers
SELECT AccountBalances.RecDate,
Sum(AccountBalances.[End Balance]) AS [SumOfEnd Balance],
CombinedFSLineItems.[CFS LineDescription]
FROM (CombinedFSLineItems
INNER JOIN AccountNumbers
ON CombinedFSLineItems.[CFS LineItem] = AccountNumbers.[CFS LineItem])
INNER JOIN AccountBalances
ON AccountNumbers.[Account#] = AccountBalances.[Account#]
GROUP BY AccountBalances.RecDate,
CombinedFSLineItems.[CFS LineDescription],
AccountBalances.StoreID, CombinedFSLineItems.[CFS LineItem]
HAVING (((AccountBalances.RecDate) >= [TempVars]![varStartDate]
AND (AccountBalances.RecDate) <= [TempVars]![varDate])
AND ((AccountBalances.StoreID) = [TempVars]![varStoreID])
AND ((CombinedFSLineItems.[CFS LineItem]) = [TempVars]![varCFSLineItem]));
StoreID, Account#, CFS LineItem
1, 101, 1
1, 102, 1
1, 103, 1
1, 104, 2
1, 105, 2
1, 106, 19
1, 107, 19
1, 108, 19
2, 101, 7
2, 102, 1
2, 106, 1
Account#, StoreID, End Balance, RecDate
101, 1, 10,000.00, 1/1/2020
101, 1, 15,000.00, 2/1/2020
101, 1, 5,000.00, 12/1/2019
102, 1, 1,000.00, 1/1/2020
102, 1, 500.00, 2/1/2020
102, 1, 1,000.00, 12/1/2019
104, 1, 2,500.00, 1/1/2020
104, 1, 3,000.00, 2/1/2020
104, 1, 1,500.00, 12/1/2019
105, 1, 1,000.00, 1/1/2020
105, 1, 1,500.00, 2/1/2020
105, 1, 1,000.00, 12/1/2019
104, 2, 3,000.00, 1/1/2020
104, 2, 4,000.00, 12/1/2019
104, 2, 5,000.00, 2/1/2020
105, 2, 1,500.00, 1/1/2020
***
- 第1行为CFS LineItem1,12-1-2月的值为6000 11000 15500
- 第2行为CFS LineItem2,12-1-2月的值为2500 3500 4500
[CFS LineDescription]
命名图中的行
理想情况下,我可以创建一个SQL语句,用作Access报告图的源数据。如果需要VBA代码或宏,则可以
谢谢 因为通常遵循Excel pivot表数据模型,所以您只需要一个具有相同结构(即更多行)的较长查询,这可以通过一个包含更多临时变量的IN
子句来处理
考虑使用varCFSLineItem1-5变量进行以下调整。此外,下面的查询将具有的转换为WHERE
,并使用表别名以提高可读性,并在选择中的分组方式中重复相同的列。确保将图表调整到所需的字段:
SELECT b.RecDate,
b.StoreID,
c.[CFS LineDescription],
c.[CFS LineItem],
SUM(b.[End Balance]) AS [SumOfEnd Balance]
FROM (CombinedFSLineItems c
INNER JOIN AccountNumbers a
ON c.[CFS LineItem] = a.[CFS LineItem])
INNER JOIN AccountBalances b
ON a.[Account#] = b.[Account#]
WHERE (b.RecDate >= [TempVars]![varStartDate]
AND b.RecDate <= [TempVars]![varDate])
AND (b.StoreID = [TempVars]![varStoreID])
AND (c.[CFS LineItem] IN ([TempVars]![varCFSLineItem1],
[TempVars]![varCFSLineItem2],
[TempVars]![varCFSLineItem3],
[TempVars]![varCFSLineItem4],
[TempVars]![varCFSLineItem5])
)
GROUP BY b.RecDate,
c.[CFS LineDescription],
b.StoreID,
c.[CFS LineItem]
选择b.RecDate,
b、 StoreID,
c、 [CFS线路描述],
c、 [CFS行项目],
总和(b[期末余额])为[期末余额]
FROM(组合的FSLineItems c
内部联接帐号a
在c上[CFS行项目]=a[CFS行项目])
内部联接帐户b
在a[帐户#]=b[帐户#]
其中(b.RecDate>=[TempVars]![varStartDate]
和b.RecDate因为通常遵循Excel数据透视表数据模型,所以您只需要使用相同结构的较长查询(即,更多行),这可以使用包含更多临时变量的
子句中的来处理
考虑使用varCFSLineItem1-5变量进行以下调整。此外,下面的查询将HAVING
转换为WHERE
,并使用表别名以提高可读性,并在选择中的分组依据中重复相同的列。确保将图形调整为所需的字段:
SELECT b.RecDate,
b.StoreID,
c.[CFS LineDescription],
c.[CFS LineItem],
SUM(b.[End Balance]) AS [SumOfEnd Balance]
FROM (CombinedFSLineItems c
INNER JOIN AccountNumbers a
ON c.[CFS LineItem] = a.[CFS LineItem])
INNER JOIN AccountBalances b
ON a.[Account#] = b.[Account#]
WHERE (b.RecDate >= [TempVars]![varStartDate]
AND b.RecDate <= [TempVars]![varDate])
AND (b.StoreID = [TempVars]![varStoreID])
AND (c.[CFS LineItem] IN ([TempVars]![varCFSLineItem1],
[TempVars]![varCFSLineItem2],
[TempVars]![varCFSLineItem3],
[TempVars]![varCFSLineItem4],
[TempVars]![varCFSLineItem5])
)
GROUP BY b.RecDate,
c.[CFS LineDescription],
b.StoreID,
c.[CFS LineItem]
选择b.RecDate,
b、 StoreID,
c、 [CFS线路描述],
c、 [CFS行项目],
总和(b[期末余额])为[期末余额]
FROM(组合的FSLineItems c
内部联接帐号a
在c上[CFS行项目]=a[CFS行项目])
内部联接帐户b
在a[帐户#]=b[帐户#]
其中(b.RecDate>=[TempVars]![varStartDate]
b.重新记录样本数据和期望的结果真的会有帮助。你想要添加、新列还是扩展的新行?样本数据和期望的结果真的会有帮助。你想要添加、新列还是扩展的新行?冻糕-谢谢你的建议-效果很好。然后我所需要做的就是对其进行交叉表查询,以获得列中的数据umnar格式,这样Access就可以绘制它。帕菲-谢谢你的建议-效果很好。然后我需要做的就是对它进行交叉表查询,以获取列格式的数据,这样Access就可以绘制它。