返回指定测试编号和日期的SQL查询
我有一个带有TestNumber列的表,该列有四个可能性(例如:1-4)、TestDate列和其他数据。我想做一个查询,返回用户定义的年份和测试编号。例如,我想返回日期为2008年的测试编号1和2 编辑: 我基本上想把这两条语句合并成一条语句:返回指定测试编号和日期的SQL查询,sql,ms-access,Sql,Ms Access,我有一个带有TestNumber列的表,该列有四个可能性(例如:1-4)、TestDate列和其他数据。我想做一个查询,返回用户定义的年份和测试编号。例如,我想返回日期为2008年的测试编号1和2 编辑: 我基本上想把这两条语句合并成一条语句: SELECT * FROM testTable WHERE testNumber = '1' AND '2' SELECT * FROM testTable WHERE testDate between #01/01/2008# and #01/01/2
SELECT * FROM testTable WHERE testNumber = '1' AND '2'
SELECT * FROM testTable WHERE testDate between #01/01/2008# and #01/01/2009#
试试这个:
SELECT *
FROM testTable
WHERE testNumber IN ('1', '2')
AND testDate between #01/01/2008# and #01/01/2009#
试试这个:
SELECT *
FROM testTable
WHERE testNumber IN ('1', '2')
AND testDate between #01/01/2008# and #01/01/2009#
我不确定是否有人正确回答了这个问题@Manu组合了标准,而不是结果集,因此他不会得到提问者两条SQL语句的并集。在我看来,应该是:
SELECT * FROM testTable WHERE testNumber In ('1', '2')
OR testDate between #01/01/2008# and #12/31/2008#
请注意,一些数据库引擎(包括Jet/ACE)包含了对介于/和之间的数据的解释,因此标准应该是一年中的第一个和最后一个日期,而不是两年中的1月1日
但这实际上取决于特定db引擎对介于/和之间的数据的解释
还要注意,如果日期字段有时间部分,则需要使用:
testDate >= #01/01/2008# and testDate < #01/01/2009#
testDate>=#01/01/2008#和testDate<#01/01/2009#
…而不是介于/和之间。我不确定是否有人正确回答了这个问题@Manu组合了标准,而不是结果集,因此他不会得到提问者两条SQL语句的并集。在我看来,应该是:
SELECT * FROM testTable WHERE testNumber In ('1', '2')
OR testDate between #01/01/2008# and #12/31/2008#
请注意,一些数据库引擎(包括Jet/ACE)包含了对介于/和之间的数据的解释,因此标准应该是一年中的第一个和最后一个日期,而不是两年中的1月1日
但这实际上取决于特定db引擎对介于/和之间的数据的解释
还要注意,如果日期字段有时间部分,则需要使用:
testDate >= #01/01/2008# and testDate < #01/01/2009#
testDate>=#01/01/2008#和testDate<#01/01/2009#
…而不是在/和之间。@ScottK:在询问SQL问题时,指定数据库引擎是至关重要的。否则,您会得到非常好的答案,但不是有用的答案(如use Cast())。我认为这个答案是错误的,因为它返回的结果与原始问题的两条SQL语句的并集不一样。AND应该改为OR,否?我应该提到db引擎,但是,我也希望看到可能的SQL Server答案,因为我将来可能会在这个应用程序中使用它。我希望这些答案没有被删除(使用cast()的答案)。@ScottK:在询问SQL问题时,指定数据库引擎是至关重要的。否则,您会得到非常好的答案,但不是有用的答案(如use Cast())。我认为这个答案是错误的,因为它返回的结果与原始问题的两条SQL语句的并集不一样。AND应该改为OR,否?我应该提到db引擎,但是,我也希望看到可能的SQL Server答案,因为我将来可能会在这个应用程序中使用它。我希望这些答案没有被删除(使用cast()的答案)。testNumber是文本字段还是数值?如果是数字,则丢失引号。testNumber是字符串。实际表格使用跑道编号作为测试编号(“16L,34R”)。测试编号是文本字段还是数值?如果是数字,则丢失引号。testNumber是字符串。实际表格使用跑道编号作为测试编号('16L,34R')。Manu的答案对我来说很有用。我有一个表单,用户可以选择他们想要的测试编号(通过复选框)和他们想要的年份(通过组合框)。我用这些来查询。谢谢你提供的关于日期之间/和之间的信息!我不确定它是否包含在内。如果@Manu的回答给了你正确的结果,那么你显然错误地陈述了你需要的结果集。您说过需要两个结果集的组合,这需要OR。也许你应该改变你的问题,以反映这样一个事实,即你不希望你发布的两个select语句的结合,而是一个结合了这两个标准的语句。我明白你的意思。我想要组合两个查询语句,而不是每个查询的结果集。我有一个表单,用户可以选择他们想要的测试编号(通过复选框)和他们想要的年份(通过组合框)。我用这些来查询。谢谢你提供的关于日期之间/和之间的信息!我不确定它是否包含在内。如果@Manu的回答给了你正确的结果,那么你显然错误地陈述了你需要的结果集。您说过需要两个结果集的组合,这需要OR。也许你应该改变你的问题,以反映这样一个事实,即你不希望你发布的两个select语句的结合,而是一个结合了这两个标准的语句。我明白你的意思。我想要组合两个查询语句,而不是每个查询的结果集。