簡體   English   中英

根據組更新變量

[英]Update Variable based on Group

我需要使用變量對表中的字段執行更新,但是當組更改時我需要更改變量。 它只是一個INTt,所以例如,如果我在下面的示例中,我想用1更新texas的記錄,並用下一個數字2更新flordia:

UPDATE表設置StateNum = @Count FROM表,其中xxxxx GROUP BY狀態

組更新變量Texas 1 Texas 1 Florida 2
佛羅里達2佛羅里達2

我認為您應該使用狀態及其編號為StateNum的查找表,然后應將此編號而不是名稱存儲到表中。

您可以在可更新的CTE中使用DENSE_RANK

-樣機數據

DECLARE @tbl TABLE([state] VARCHAR(100),StateNum INT);
INSERT INTO @tbl([state]) VALUES
('Texas'),('Florida'),('Texas'),('Nevada');

-您的更新聲明

WITH updateableCTE AS
(
    SELECT StateNum
          ,DENSE_RANK() OVER(ORDER BY [state]) AS NewValue
    FROM @tbl 
)
UPDATE updateableCTE SET StateNum=NewValue;

-檢查結果

SELECT * FROM @tbl;

然后,您應該使用它來獲取查找表的數據

SELECT StateNum,[state] FROM @tbl GROUP BY StateNum,[state];

然后從原始表中刪除狀態列,並讓StateNum為外鍵。

暫無
暫無

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

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