Sql 如何更新其他列中相同的值? 这背后的逻辑是,如果Server请求号对于同一个位置是相同的,那么,考虑马克斯在“停机前”的“行”。需要更新的行是具有最小值的列名ID

Sql 如何更新其他列中相同的值? 这背后的逻辑是,如果Server请求号对于同一个位置是相同的,那么,考虑马克斯在“停机前”的“行”。需要更新的行是具有最小值的列名ID,sql,sql-server,Sql,Sql Server,我需要创建三个新列Adj Start date、Adj end date、Adj DC power,并插入相应列中的数据 停机时间\开始=调整开始日期 -停机时间=调整结束日期 -停机前的功率=调整直流功率 我尝试过这样做,但是通过对相同的值进行分组,我找不到第一行 我正在使用sql server 2012 这就是我迄今为止所尝试的: select location,downtime_start , count(*) from dbo.TB1 group by location,downt

我需要创建三个新列Adj Start date、Adj end date、Adj DC power,并插入相应列中的数据

  • 停机时间\开始=调整开始日期

    -停机时间=调整结束日期

    -停机前的功率=调整直流功率

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

我正在使用sql server 2012

这就是我迄今为止所尝试的:

select location,downtime_start  , count(*)
from dbo.TB1
group by location,downtime_start  , count(*)
having count(*)>1
在这个查询之后,我得到了TB1的结果,我不知道如何对它们进行分组并将值插入到相应的列中

谢谢你的帮助

多谢各位

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 
输出表应如下所示:

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 
|13.67 | 2017年3月8日下午3:25:37 | 2017年3月8日下午6:41:59 | 0003
|0 | 0 | 0

3  |  xyz.a   |    3/8/2017 2:00:00 PM|   3/10/2017 8:00:00 AM |   14.16 
|13.67 2017年3月8日下午3:25:37 | 2017年3月8日下午6:41:59 | 0003 | 0 | 0 | 0

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

如果需要选择数据,请在rn=1时使用
CASE\u start ELSE 0 END

您使用的是MySQL还是MS SQL Server?(不要给未涉及的产品贴标签。)我看不懂那些图片的小文字。(这里的大多数人想要格式化的文本,而不是图像…)我使用的是MS SQL 2010请将您的问题包括在示例数据中。评论里看不懂。(理想情况下,带有
CREATE TABLE
INSERT
语句的代码块是最好的)。@Damien\u不信者:我已经在问题中添加了数据,我得到一个错误,因为这三个语句的列名都不正确columns@Looking_for_answers我已经编辑了我的查询并添加了五个缺少的列。如果出现错误,请提供完整的错误消息