1

我有下表结构。

订单表

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_Time ,如果Del_Time小于60Hits应该填充Del_Qty字段的值,如果Del_Time大于 60 ,则应该使用Del_Qty的值填充Miss

这可能吗?我正在使用 MS Sql Server

4

2 回答 2

1

两个datetime值之间的差是 a 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-12T12:45:29.743 回答
0

(编辑)在三个语句中执行此操作:

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

于 2013-09-12T12:46:52.910 回答