SQL Server 基于分组的SQL更新

a5g8bdjr  于 2023-01-12  发布在  其他
关注(0)|答案(1)|浏览(195)

我们的系统为每个日记账编号创建2行,并在每行上标记一个段。
第1行是系统生成的,第2行是用户在前端输入的内容。
问题出现在每个日记账的第2行,系统按照用户在前端输入的方式填充段,而第1行按照在后端存储的方式填充段-这意味着我们可能在日记账本身中遇到大小写敏感问题。不是日记账上的问题,而是导致更深一层的问题。
当前表如下所示
| 高功率微波|日志编号|节段|
| - ------|- ------|- ------|
| 1个|小行星|豪斯|
| 第二章|小行星|豪斯|
| 三个|小行星|扁平|
| 四个|小行星|平坦|
| 五个|小行星10003|单位|
| 六个|小行星10003|单位T|
必须更新每个日记账的第2行段,以匹配第1行段。
预期最终结果:
| 高功率微波|日志编号|节段|
| - ------|- ------|- ------|
| 1个|小行星|豪斯|
| 第二章|小行星|豪斯|
| 三个|小行星|扁平|
| 四个|小行星|扁平|
| 五个|小行星10003|单位|
| 六个|小行星10003|单位|
它必须更新为系统如何填充段,以便如果它显示为所有大写字母,第二行必须是所有大写字母等。
我尝试了各种方法,但没有一种方法能达到预期效果。例如,我试图找到按日记账编号分组的最小值(hmy),并更新按日记账编号分组的最大值(hmy)段,但没有成功。
还看了更新值的基础上,前一行,但不能工作,我如何可以将该代码纳入我的问题。

2uluyalo

2uluyalo1#

您可以使用LAG获取先前值并更新:

update  t
set Segment = PrevSegment
FROM    (
    select  *
    ,   LAG(Segment) OVER(PARTITION BY [Journal #] ORDER BY HMY) AS prevSegment
    FROM    journaltable j
    ) t
WHERE   prevSegment IS NOT NULL -- prevents writing the system generated value

相关问题