【发布时间】:2015-06-08 02:16:55
【问题描述】:
是否可以在 C# 中将查询插入到另一个查询中?目前我正在连接到一个访问数据库,当我将查询插入到 Microsoft Access 上 SQL 视图中的另一个查询中时,会显示我想要的数据。但是,当我将相同的代码插入 C# 时,查询带有下划线。基本上,此查询是将“日”视图中生成的查询中的数据包含到“月”视图的查询中的 FROM 部分。
如何修改查询以便能够在 C# 中运行?
Microsoft Access 上 SQL 视图中“日视图”的查询是:
SELECT outbound.[Receipt date], outbound.[Receive plant], Avg(outbound.[Aging Days]) AS [AvgOfAging Days] FROM outbound GROUP BY outbound.[Receipt date], outbound.[Receive plant] HAVING (((outbound.[Receipt date]) Is Not Null));
Microsoft Access 上 SQL 视图中“月视图”的查询是:
SELECT Format([Receipt date],"mm/yyyy") AS [Month], Avg(Day.[AvgOfAging Days]) AS [AvgOfAvgOfAging Days] FROM (SELECT outbound.[Receipt date], outbound.[Receive plant], Avg(outbound.[Aging Days]) AS [AvgOfAging Days] FROM outbound WHERE (outbound.[Receipt date] > #4/1/2015#) GROUP BY outbound.[Receipt date], outbound.[Receive plant] HAVING (((outbound.[Receipt date]) Is Not Null))) AS [Day] WHERE Day.[Receive plant] = "2300" GROUP BY Format([Receipt date],"mm/yyyy"), Day.[Receive plant] HAVING (((Format([Receipt date],"mm/yyyy")) Is Not Null));
(对于日期和工厂,我有硬编码值来测试查询,但我的实际程序应该读取用户选择)
为适应“月”视图的 C# 应用程序而修改的代码是:
string cmdQuery = "SELECT Format([Receipt date],\"mm/yyyy\") AS [Month], Avg(Day.[AvgOfAging Days]) AS [AvgOfAvgOfAging Days] "
+ "FROM ("SELECT outbound.[Receipt date], outbound.[Receive plant], Avg(outbound.[Aging Days]) AS [AvgOfAging Days] " + "FROM outbound " + "WHERE ([Receipt date] >= #" + dateFrom + "#) AND ([Receipt date] <= #" + dateTo + "#) AND ((outbound.[Receive plant]) ='" + plant[i] + "')" + "GROUP BY outbound.[Receipt date], outbound.[Receive plant] " + "HAVING (((outbound.[Receipt date]) Is Not Null)); ) AS [Day] "
+ "WHERE ((Day.[Receive plant]) ='" + plant[i] + "') "
+ "GROUP BY Format([Receipt date],\"mm/yyyy\"), Day.[Receive plant] "
+ "HAVING (((Format([Receipt date],\"mm/yyyy\")) Is Not Null)) ";
如何编辑上面的查询以使该查询能够在 C# 中运行?
谢谢。
【问题讨论】: