Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql MS Access,包括日期范围查询中的所有日期_Sql_Ms Access_Jet - Fatal编程技术网

Sql MS Access,包括日期范围查询中的所有日期

Sql MS Access,包括日期范围查询中的所有日期,sql,ms-access,jet,Sql,Ms Access,Jet,在这里访问2010 带着另一个谜团回来。我有一个疑问: SELECT DischargeDatabase.Date, Avg([pH]) AS [pH Value], Avg([Temperature]) AS [Temperature (°C)], Avg([ZincLevel]) AS [Zinc (mg/l)], Sum([Effluent]) AS [Discharge (gal)], Count(*) AS [# Discharges] FROM DischargeDatabase W

在这里访问2010

带着另一个谜团回来。我有一个疑问:

SELECT DischargeDatabase.Date, Avg([pH]) AS [pH Value], Avg([Temperature]) AS [Temperature (°C)], Avg([ZincLevel]) AS [Zinc (mg/l)], Sum([Effluent]) AS [Discharge (gal)], Count(*) AS [# Discharges]
FROM DischargeDatabase
WHERE DischargeDatabase.Date Between Forms!QueryForm!TextCriteriaQ0A And Forms!QueryForm!TextCriteriaQ0B
GROUP BY DischargeDatabase.Date;
来自我一直在建立的废水处理数据库。这提供了废水排放的逐日汇总,平均pH值、温度和锌水平,以及废水排放量的总和。用户使用日期选择器在QueryForm的两个文本框中选择一个范围,然后运行查询

显示的是按日期范围按天分组的出院情况,仅列出了有出院的天数。用户请求的是要显示的范围内的每一天,而在DischargeDatabase中没有记录的那些天的字段值只有零

i、 e.从2013年11月4日到2013年16月4日,在一个周末内:

Date      | ph Value | Temperature (°C) | Zinc (mg/l) | Discharge (gal) | # Discharges
4/11/2013   9.5        18.6               0.89          5000              5
4/12/2013   9.1        17.9               1.68          3000              2
4/15/2013   8.9        19.6               1.47          10000             7
4/16/2013   9.6        18.2               0.35          1500              1
为此:

Date      | ph Value | Temperature (°C) | Zinc (mg/l) | Discharge (gal) | # Discharges
4/11/2013   9.5        18.6               0.89          5000              5
4/12/2013   9.1        17.9               1.68          3000              2
4/13/2013   0.0         0.0               0.0           0                 0
4/14/2013   0.0         0.0               0.0           0                 0
4/15/2013   8.9        19.6               1.47          10000             7
4/16/2013   9.6        18.2               0.35          1500              1
这样用户就可以将查询粘贴到excel电子表格中,而不会产生任何问题。我甚至不确定这是否可行,或者在查询范围内您选择的是不存在的记录。可能的工作方式是使用预填充了零的伪表/查询进行某种连接


谢谢你的帮助和任何想法

你的最后一句话是正确的!这类事情——即使没有数据,也可以填充所有组——可以用我们称之为数字表或理货表的东西来完成,可以是CTE,也可以是真实的表格,无论你想做什么。您可以展开CTE以生成日期

;WITH CTE AS (
  SELECT 1 as Num
  UNION ALL
  SELECT Num + 1 FROM CTE WHERE Num < @Max
)

SELECT * FROM CTE
此模式可以扩展以生成您的日期

declare @startDate datetime
set @startDate = getdate() --to start from today

;WITH CTE AS (
  SELECT @startDate as myDate
  UNION ALL
  SELECT dateadd(day, 1, myDate) as myDate FROM CTE WHERE myDate < dateadd(day, 30, @startDate)
)

SELECT myDate FROM CTE

现在,您可以将该CTE用作右外部联接中的左表。在Access中,我认为这将需要一个真正的表。只需创建一个日历表并用数字手动填充它-您只需执行一次。

使用日历表,这可能相当容易。你可以使用它来构建自己的应用程序

创建一个查询,根据日期范围筛选日历表,并将其左键联接到其他表。在本例中,我简化了选择字段列表

选择 c、 日期, Countddb.日期为[出院] 从…起 tblCalendar AS c 左连接放电数据库作为ddb 在c.日期=ddb.日期 哪里 c、 两人之间的约会 形式!查询表单!文本标准Q0A 还有表格!查询表单!文本标准Q0B 按c.分组,以确定日期;
我喜欢这个解决方案。我得到了一个错误94-无论是尝试向LoadCalendar传递参数还是不传递参数,都无效地使用Null。但是,将intYear设置为静态2013,并运行LoadCalendar子系统是可行的。不确定是我的系统还是什么,但YearDate对我不起作用。现在正在寻找解决办法。谢谢。啊,渴望,似乎很有效,而且会在一年的变化中发挥作用。再次感谢你!我在LoadCalendar中找不到问题。我不明白为什么YearDate有问题。它将2013作为一个整数给出。是的,我的在调试时在YearDate读取空值,无论发送了什么或没有发送什么。奇怪的是,=Date似乎在我们所有的系统上都返回null。不过,我已经用你的解决方案解决了所有问题,再次感谢你!