簡體   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