使用基于相同表字段的值更新表列

时间:2013-09-12 12:36:40

标签: sql-server

我有下表格式。

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_Time 点击次数应填充 Del_Qty <的值/ strong>字段,如果 Del_Time 小于 60 小姐应填充来自 Del_Qty 的值,如果< strong> Del_Time 大于60。

这可能吗?我使用的是MS Sql Server

2 个答案:

答案 0 :(得分:1)

两个datetime值之间的差异为datetime。说“小于60”是没有意义的。我想你想要分钟(这是猜测)。如果是这样,您想使用datediff()功能。

否则,这是一种非常简单的update语法,带有casecase用于避免在不满足条件时更新值:

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)

答案 1 :(得分: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