Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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和ESRI定义查询中,从两个日期/时间中选择一个以上的记录_Sql_Sql Server_Esri - Fatal编程技术网

在SQL和ESRI定义查询中,从两个日期/时间中选择一个以上的记录

在SQL和ESRI定义查询中,从两个日期/时间中选择一个以上的记录,sql,sql-server,esri,Sql,Sql Server,Esri,我是ESRI SQL用户-因此我的查询的开头是:SELECT*FROM tablename,其中: 我有带日期/时间字段(称为timedate)的基于GPS的车辆记录(除雪器),我需要a.)根据单独表格中的整数字段选择在前x小时数内发生的记录,或B.)根据单独表格中的日期/时间字段选择比日期/时间新的记录。如果是案例A,那么案例B中的字段将为空。如果是案例B,那么案例A中的字段将为0 这是我为案例A写的 SELECT * FROM myDataTable WHERE(DATEDIFF(hh, T

我是ESRI SQL用户-因此我的查询的开头是:
SELECT*FROM tablename,其中

我有带日期/时间字段(称为timedate)的基于GPS的车辆记录(除雪器),我需要a.)根据单独表格中的整数字段选择在前x小时数内发生的记录,或B.)根据单独表格中的日期/时间字段选择比日期/时间新的记录。如果是案例A,那么案例B中的字段将为空。如果是案例B,那么案例A中的字段将为0

这是我为案例A写的

SELECT * FROM myDataTable
WHERE(DATEDIFF(hh, TimeDate, GETDATE()) <= (select NumberofHours from myHoursControlTable where District = 2)
AND Fleet = 'District 2'
AND NOT [Speed] = 0
AND ([AssetDesc] LIKE  'Sander/Plow%' AND Input2On = 'On' AND Input1On = 'On')) 
从myDataTable中选择*

WHERE(DATEDIFF(hh,TimeDate,GETDATE())思考得很快。可能不是最优化的,但为什么不简单地使用OR和两个WHERE语句呢

SELECT * FROM myDataTable
WHERE(
(
(DATEDIFF(hh, TimeDate, GETDATE()) <= (select NumberofHours from myHoursControlTable where District = 2)
AND Fleet = 'District 2'
AND NOT [Speed] = 0
AND ([AssetDesc] LIKE  'Sander/Plow%' AND Input2On = 'On' AND Input1On = 'On')) 
)
OR
(
(TimeDate <= (select StartTime from myHoursControlTable where District = 2)
AND Fleet = 'District 2'
AND NOT [Speed] = 0
AND([AssetDesc] LIKE  'Sander/Plow%' AND Input2On = 'On' AND Input1On = 'On')) 
)
从myDataTable中选择*
在哪里(
(

(DATEDIFF(hh,TimeDate,GETDATE())esri可以生成变量并将其作为参数发送到sql server吗?我不知道。我可以测试它。看了之后,我不这么认为-除非我遗漏了一些东西,否则您必须在WHERE子句之外声明变量,对吗?所以,我不能这样做,因为我卡在WHERE子句中。@sernst您如何执行代码?我想知道ESRI是什么…@meewoK ESRI是GIS软件(用于制作地图)。这些都是空间数据-我可以应用他们所谓的“定义查询”但后来我陷入了WHERE子句中。我基本上是试图限制地图上显示的数据。你的顶级解决方案奏效了。我不认为这么简单的东西会奏效。谢谢。我更喜欢更新,但当我运行它时,它忽略了AND参数-它返回所有的地区,而不仅仅是地区2。@sernst很可能是somet正在处理括号。我很确定错误在那里…@sernst再次查看数字2,我清理了一下括号并修复了一个错误。
SELECT * FROM myDataTable
WHERE(
(
(DATEDIFF(hh, TimeDate, GETDATE()) <= (select NumberofHours from myHoursControlTable where District = 2)
AND Fleet = 'District 2'
AND NOT [Speed] = 0
AND ([AssetDesc] LIKE  'Sander/Plow%' AND Input2On = 'On' AND Input1On = 'On')) 
)
OR
(
(TimeDate <= (select StartTime from myHoursControlTable where District = 2)
AND Fleet = 'District 2'
AND NOT [Speed] = 0
AND([AssetDesc] LIKE  'Sander/Plow%' AND Input2On = 'On' AND Input1On = 'On')) 
)
SELECT * FROM myDataTable
WHERE
  (    
    DATEDIFF(hh, TimeDate, GETDATE()) <= 
    (select NumberofHours from myHoursControlTable where District = 2)
  OR 
    TimeDate <= (select StartTime from myHoursControlTable where District = 2)
  )
AND Fleet = 'District 2'
AND NOT [Speed] = 0
AND ([AssetDesc] LIKE  'Sander/Plow%' AND Input2On = 'On' AND Input1On = 'On');