繁体   English   中英

SQL 基于分组更新

[英]SQL Update based on grouping

我们的系统为每个期刊编号创建 2 行,并在每行上标记一个段。

第 1 行是系统生成的,第 2 行是用户输入前端的内容。

问题是每个日志的第二行,系统以用户在前端输入的方式填充段,而第一行填充段是如何存储在后端的——这意味着我们可以在整个过程中遇到区分大小写的问题期刊本身。 这不是期刊上的问题,但会导致进一步的问题。

目前表格如下所示

HMY 杂志 # 部分
1个 10001 房子
2个 10001
3个 10002 平坦的
4个 10002 平坦的
5个 10003 单元
6个 10003 单元

每个日志的第二行段必须更新以匹配第一行的段。

期望的最终结果:

HMY 杂志 # 部分
1个 10001 房子
2个 10001 房子
3个 10002 平坦的
4个 10002 平坦的
5个 10003 单元
6个 10003 单元

它必须更新系统填充段的方式,因此如果它显示为所有大写字母,则第二行必须全部为大写字母等。

我尝试了各种方法,但没有一种方法能像我期望的那样有效。 例如,我试图找到按期刊编号分组的 min(hmy) 并更新按期刊编号分组的 max(hmy) 的段,但它不会。

还查看了基于前一行的更新值,但无法解决如何将该代码合并到我的问题中的问题。

您可以使用 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM