首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新其他列中相同的值?

如何更新其他列中相同的值?
EN

Stack Overflow用户
提问于 2017-04-26 08:51:22
回答 1查看 55关注 0票数 0

这背后的逻辑是,如果相同位置的Ser_request号码是相同的,那么,考虑使用Max的行“停机前的电源”。需要更新的行是具有最小值的列名ID

我需要创建三个新列Adj开始日期,Adj结束日期,Adj DC电源,并插入从回复列中的数据。

  • downtime_start =Adj开始日期 -downtime_end = Adj结束日期 -power_before_downtime = Adj直流电源

我试过这样做,但是通过分组相同的值,我找不到第一行。

我正在使用sql server 2012。

这就是我迄今尝试过的:

代码语言:javascript
复制
select location,downtime_start  , count(*)
from dbo.TB1
group by location,downtime_start  , count(*)
having count(*)>1

在这个查询之后,我得到了TB1的结果,我不知道如何将它们分组并将值插入到相应的列中。

任何帮助都是非常感谢的。

谢谢

代码语言:javascript
复制
ID | location | downtime_start      | downtime_end         | power_before_downtime | power_after_downtime | creation_time       | end_time            | ser_request
1  | xyz.a    | 3/8/2017 2:00:00 PM | 3/10/2017 8:00:00 AM | 14.16                 | 13.67                | 3/8/2017 3:25:37 PM | 3/8/2017 6:41:59 PM | 0003 
2  | xyz.a    | 3/8/2017 2:00:00 PM | 3/10/2017 8:00:00 AM | 14.16                 | 13.67                | 3/8/2017 3:25:37 PM | 3/8/2017 6:41:59 PM | 0003
3  | xyz.a    | 3/8/2017 2:00:00 PM | 3/10/2017 8:00:00 AM | 14.16                 | 13.67                | 3/8/2017 3:25:37 PM | 3/8/2017 6:41:59 PM | 0003 

输出表应该类似于:

代码语言:javascript
复制
ID | location | downtime_start        | downtime_end           | power_before_downtime|   power_after_downtime| creation_time        | end_time 
      |ser_request |  Adj Start date        |   Adj end date           |  Adj DC power

1  | xyz.a    | 3/8/2017 2:00:00 PM   | 3/10/2017 8:00:00 AM   | 14.16                |   13.67              |3/8/2017 3:25:37 PM    |  3/8/2017 6:41:59 PM| 0003       | 3/8/2017 2:00:00 PM    |  3/10/2017 8:00:00 AM    |     14.16

2  |  xyz.a   |  3/8/2017 2:00:00 PM  |   3/10/2017 8:00:00 AM |    14.16 

3:25:37下午3/8/2017 6:41:59

0\x{e76f}\x{e76f}0

代码语言:javascript
复制
3  |  xyz.a   |    3/8/2017 2:00:00 PM|   3/10/2017 8:00:00 AM |   14.16 

+ 13.67 3/8/2017 3:25:37下午3/8/2017

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-26 09:36:13

代码语言:javascript
复制
UPDATE T
SET 
[Adj Start date] = downtime_start,
[Adj end date]   = downtime_end,
[Adj DC power]   = power_before_downtime
FROM (
    SELECT [Adj Start date], [Adj end date], [Adj DC power], downtime_start, downtime_end, power_before_downtime, 
        rn = ROW_NUMBER() OVER (PARTITION BY downtime_start, downtime_end ORDER BY id) 
    FROM dbo.TB1
) T
WHERE rn = 1

如果需要选择数据,请使用CASE WHEN rn = 1 THEN downtime_start ELSE 0 END

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

https://stackoverflow.com/questions/43629306

复制
相关文章

相似问题

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