簡體   English   中英

根據行值更新 SQL 查詢中的多個值

[英]Update Multiple Values in a SQL query based on row values

當前表

有沒有可能只使用 SQL 更新查詢將 7 月數據更新為 8 月數據? 例如,B 7 月份的值應該更新為 12。Dimension Key 是主鍵,Name 是“持久”鍵。 CURSOR 允許使用但不是首選。

您必須將表連接到自身以設置它的不同記錄。

UPDATE A
SET A.Value = B.Value
FROM
    mytable A
    INNER JOIN mytable B
        ON A.Name = B.Name
WHERE
    A.Date = '2022-07-01' AND
    B.Date = '2022-08-01'

如果您想在整個月的相應日期執行此操作,您可以像這樣更改查詢

UPDATE A
SET A.Value = B.Value
FROM
    mytable A
    INNER JOIN mytable B
        ON A.Name = B.Name AND DAY(A.Date) = DAY(B.Date)
WHERE
    YEAR(A.Date) = 2022 AND MONTH(A.Date) = 7 AND
    YEAR(B.Date) = 2022 AND MONTH(B.Date) = 8

一整年你會寫

...
        ON A.Name = B.Name AND
           DAY(A.Date) = DAY(B.Date) AND MONTH(A.Date) = MONTH(B.Date) - 1 
WHERE
    YEAR(A.Date) = 2022 AND
    YEAR(B.Date) = 2022

多年來:

...
        ON A.Name = B.Name AND
           DAY(A.Date) = DAY(B.Date) AND
           MONTH(A.Date) = MONTH(B.Date) - 1 AND
           YEAR(A.Date) = YEAR(B.Date) 

但是,如果月份在不同年份,這種簡單的方法就不起作用。 而且每個月都有不同的天數。 由於我不知道您的真實用例,因此我不會在這里詳細介紹。

而不是寫SET A.Value = B.Value您可以簡單地寫SET Value = B.Value因為目標表是在UPDATE A中指定的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM