我有下面的桌子结构。
Order_Table
Ord_ID Ord_Date Del_Date Del_Qty Del_Time Hits Miss
10001 9/13/2013 12:30 9/13/2013 13:10 2 40 2 0
10002 9/13/2013 13:09 9/13/2013 15:10 1 119 0 1
10003 9/13/2013 16:20 9/13/2013 16:50 1 30 1 0我想更新基于(Ord_Date- Del_Date)的表,如果Del_TimeE 212小于E 113 60 E 214/code>和E 115省略E 216应填充E 117Del_QtyE 218如果E 119Del_TimeE 220E 220大于60,则Hits应填充Del_Qty字段。
这个是可能的吗?使用MS Sql Server
发布于 2013-09-12 12:45:29
两个datetime值之间的区别是一个datetime。说“不到60”是没有道理的。我想你想要几分钟(这只是猜测)。如果是这样的话,您希望使用datediff()函数。
否则,这是相当简单的update语法,带有一个case。case用于避免在不满足条件时更新值:
update order_table
set del_time = datediff(minute, del_date, ord_date),
hits = (case when datediff(minute, del_date, ord_date) < 60
then del_qty else hits
end),
miss = (case when datediff(minute, del_date, ord_date) > 60
then del_qty else miss
end)发布于 2013-09-12 12:46:52
或者(编辑)在三条语句中这样做:
UPDATE tbl SET del_time=datediff(minute,ord_date,del_date);
UPDATE tbl SET HITS=del_qty WHERE del_time<60;
UPDATE tbl SET MISS=del_qty WHERE del_time>60;见这里http://sqlfiddle.com/#!3/3d1e3/1
https://stackoverflow.com/questions/18764469
复制相似问题