[英]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.