首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据同一个表更新具有值的表列

根据同一个表更新具有值的表列
EN

Stack Overflow用户
提问于 2013-09-12 12:36:39
回答 2查看 278关注 0票数 1

我有下面的桌子结构。

Order_Table

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-12 12:45:29

两个datetime值之间的区别是一个datetime。说“不到60”是没有道理的。我想你想要几分钟(这只是猜测)。如果是这样的话,您希望使用datediff()函数。

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-09-12 12:46:52

或者(编辑)在三条语句中这样做:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18764469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档