我有一个类似的查询:
SELECT [Week 1].Product, [Week 2].Product, [Week 3].Product, [Week 4].Product, Sum([Week 1].Transaction_Amount), Sum([Week 2].Transaction_Amount), Sum([Week 3].Transaction_Amount), Sum([Week 4].Transaction_Amount)
FROM [Week 2],[Week 3],[Week 3],[Week 4];
我有70周的数据,名称为[week 1]
到[week 70]
是否可以使[week 1],[Week 2],[Week 3],[Week 4]
动态化。
(i,e)有一个主表,我可以在其中有4周名称,如[Week 8], [Week 6], [Week 45], [Week 18]
,并在我的查询中将[Week 1], [Week 2], [Week 3], [Week 4]
替换为上述4
这是MS访问应用程序。对不起,我之前没有提过。
答案 0 :(得分:0)
更新
在按钮上创建一些VBA代码,动态创建选择查询。 How to build a dynamic query
你可以:
1)更改您的表格结构,以便您拥有所有周的单个表格,例如周(ID,WeekNumber,column1,column2 ......)。然后在Select语句中,您可以添加where子句以使用参数选择您感兴趣的周数。这取决于具有相同结构的所有周表。
2)使用Dynamic SQL构建select语句并替换表名。见sp_executesql
答案 1 :(得分:0)
是的,您可以使用动态查询,然后使用EXEC
或sp_executesql
执行查询
以下是伪代码,您可以根据自己的要求即兴创作。
DECLARE @STartCount, @TableCount, @Query, @SubQuery, @WeekTblName
SET @StartCount = 1
SELECT @TableCount = Count(*) FROM Master_Table
WHILE(@StartCount <= @TableCount)
BEGIN
SELECT @WeekTblName = Col_Name FROM Master_Table WHERE ID = @StartCount
SET @SubQuery = @SubQuery + @WeekTblName + ' AS [Week ' + @STartCount + '], '
SET @StartCount = @StartCount + 1
END
SET @SUBQUERY = LEFT(@SUBQUERY, LEN(@SUBQUERY) - 2);
SET @Query = 'SELECT [Week 1].Product, [Week 2].Product, [Week 3].Product, [Week 4].Product, Sum([Week 1].Transaction_Amount), Sum([Week 2].Transaction_Amount), Sum([Week 3].Transaction_Amount), Sum([Week 4].Transaction_Amount)
FROM ' + @SubQuery
EXEC(@Query)
希望这有帮助