[英]SQL: Selecting between date range
如果我在我想要的日期/时间字段上使用 Max(SampleDateTime) 或 Min(),我的查询将返回 1 个值,但如果我省略 Max 或 Min,它不返回任何值。 我想返回所有值,但我似乎无法弄清楚这一点。
我想要生产运行开始和停止时间之间的所有质量样品。
运行示例:
Select Max([SampleDateTime])
FROM [QualitySamples] AS [GoodSamples]
WHERE [GoodSamples].[SampleDateTime] >= [ProductionRuns_tbl].[RunStartDate]
AND [GoodSamples].[SampleDateTime] <= [ProductionRuns_tbl].[RunEndDate]
ProductionRuns_tbl:
运行开始日期运行结束日期
1/1/2017 12 点 1/5/17 12 点
...
质量样品表:
ID 采样日期时间
1 1/1/2017 凌晨 2 点
2 1/1/2017 凌晨 3 点
...
这是完整的 SQL 代码:
SELECT ProductionRuns_tbl.RunName, ProductionRuns_tbl.RunStartDate,
ProductionRuns_tbl.RunEndDate,
(Select Max([SampleDateTime])
FROM [QualitySamples] AS [GoodSamples]
WHERE [GoodSamples].[SampleDateTime] >= [ProductionRuns_tbl].[RunStartDate]
AND [GoodSamples].[SampleDateTime] <= [ProductionRuns_tbl].[RunEndDate])
AS RunSamples
FROM ProductionRuns_tbl
WHERE (((ProductionRuns_tbl.RunName)=[Forms]![Home]![RunName]));
尝试使用 join 代替:
SELECT ProductionRuns_tbl.RunName,
ProductionRuns_tbl.RunStartDate,
ProductionRuns_tbl.RunEndDate,
GoodSamples.SampleDateTime
FROM QualitySamples GoodSamples INNER JOIN ProductionRuns_tbl ON
GoodSamples.SampleDateTime >= ProductionRuns_tbl.RunStartDate AND
GoodSamples.SampleDateTime <= ProductionRuns_tbl.RunEndDate
WHERE ProductionRuns_tbl.RunName=[Forms]![Home]![RunName]
不要有WHERE 、 MAX或MIN 。 只要有SELECT查询。
Select [SampleDateTime]
FROM [QualitySamples] AS [GoodSamples]
我现在冒着风险发帖,因为我不得不试着读懂你的想法(另外,我不知道这是否适用于 Access,但它适用于 SQL 服务器)
既然你想要所有的数据,这就是你要找的吗?
SELECT
ProductionRuns_tbl.RunName,
ProductionRuns_tbl.RunStartDate,
ProductionRuns_tbl.RunEndDate,
[QualitySamples].[SampleDateTime]
FROM
ProductionRuns_tbl
LEFT JOIN
[QualitySamples]
ON
[QualitySamples].[SampleDateTime] >= [ProductionRuns_tbl].[RunStartDate]
AND
[QualitySamples].[SampleDateTime] <= [ProductionRuns_tbl].[RunEndDate]
WHERE
(((ProductionRuns_tbl.RunName)=[Forms]![Home]![RunName]));
这应该列出每个 SampleDateTime 重复的 RunName、Start 和 End 日期。 根据您更具体的要求,您可以从那里改进结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.