Tsql 遇到被零除的错误。T-SQL
我在SQL 2012中运行了以下T-SQLTsql 遇到被零除的错误。T-SQL,tsql,sql-server-2012,Tsql,Sql Server 2012,我在SQL 2012中运行了以下T-SQL SELECT machine_id, speed_gps_kph, odometer_total, event_timestamp, 1.0 * (speed_gps_kph - LAG(speed_gps_kph, 1) OVER (PARTITION BY machine_id ORDER BY event_timestamp)) / datediff(ss, LAG(event_timestamp, 1) OVER (PARTITI
SELECT machine_id, speed_gps_kph, odometer_total, event_timestamp,
1.0 * (speed_gps_kph - LAG(speed_gps_kph, 1) OVER (PARTITION BY machine_id ORDER BY event_timestamp)) /
datediff(ss, LAG(event_timestamp, 1) OVER (PARTITION BY machine_id ORDER BY event_timestamp), event_timestamp)
FROM Simple_speed
然而,正如错误所指出的,我有一个被零除的问题
关于这个问题有很多帖子和答案,但我很难做到这一点。这里有一个简单的方法,可以使用
NULLIF(…,0)控制被零除的错误,而无需重复自己的操作:
现在,对于分母为零的行,表达式将返回NULL
。问题标题是准确的错误吗?最好在问题的主体中加上“这就是错误”这样的字眼:
SELECT machine_id, speed_gps_kph, odometer_total, event_timestamp,
1.0 * (speed_gps_kph - LAG(speed_gps_kph, 1) OVER (PARTITION BY machine_id ORDER BY event_timestamp))
/ NULLIF(datediff(ss, LAG(event_timestamp, 1) OVER (PARTITION BY machine_id ORDER BY event_timestamp), event_timestamp),0)
FROM Simple_speed