You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在SQL Server中通过循环逐条更新SectorID对应的名称与简称?

How to Update Sector Names via Loop

Got it! Let's walk through how to update your SectorName and SectorShortName fields to "Sector X" (where X is the corresponding SectorID) using loops across common tools you might be working with:

1. Python (Pandas)

If you're using Pandas to handle your dataset, here's how to implement the loop (note: Pandas usually prefers vectorized operations for speed, but we'll stick to your loop requirement):

First, let's recreate your sample dataset:

import pandas as pd

data = {
    'SectorID': [1,2,3,4,5,6,7,8,9,10,11,12,13],
    'SectorName': ['METALS', 'FINANCIAL SERVICES', 'IT', 'SERVICES', 'PHARMA', 'CHEMICALS', 'TEXTILES', 'ENERGY', 'INDUSTRIAL MANUFACTURING', 'CEMENT & CEMENT PRODUCTS', 'CONSUMER GOODS', 'CONSTRUCTION', 'TELECOM'],
    'SectorShortName': ['METAL', 'FINAN', 'IT', 'SERVI', 'PHARM', 'CHEMI', 'TEXTI', 'ENERG', 'INDUS', 'CEMEN', 'CONSU', 'CONST', '...']
}
df = pd.DataFrame(data)

Then loop through each row to update the fields:

# Use itertuples for faster iteration (better than iterrows)
for row in df.itertuples():
    sector_label = f"Sector {row.SectorID}"
    # Update both columns for the current row
    df.at[row.Index, 'SectorName'] = sector_label
    df.at[row.Index, 'SectorShortName'] = sector_label

After running this, every row will have SectorName and SectorShortName set to "Sector [ID]" (e.g., "Sector 1" for ID 1).

2. SQL (Database)

If your dataset is stored in a SQL database, you can use a WHILE loop to iterate through each SectorID and update the fields.

For SQL Server:

DECLARE @CurrentID INT = 1, @MaxID INT
SELECT @MaxID = MAX(SectorID) FROM YourTableName -- Replace with your actual table name

WHILE @CurrentID <= @MaxID
BEGIN
    UPDATE YourTableName
    SET SectorName = 'Sector ' + CAST(@CurrentID AS VARCHAR(2)),
        SectorShortName = 'Sector ' + CAST(@CurrentID AS VARCHAR(2))
    WHERE SectorID = @CurrentID

    SET @CurrentID = @CurrentID + 1
END

For MySQL:

SET @current_id = 1;
SET @max_id = (SELECT MAX(SectorID) FROM YourTableName); -- Replace with your table name

WHILE @current_id <= @max_id DO
    UPDATE YourTableName
    SET SectorName = CONCAT('Sector ', @current_id),
        SectorShortName = CONCAT('Sector ', @current_id)
    WHERE SectorID = @current_id;
    
    SET @current_id = @current_id + 1;
END WHILE;

3. Excel VBA

If you're working with an Excel spreadsheet, you can use a VBA loop to update the cells:

Sub UpdateSectorLabels()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    ' Set the worksheet where your data lives (change to your sheet name)
    Set ws = ThisWorkbook.Sheets("Sheet1")
    ' Find the last row with data in column A (SectorID)
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' Loop from row 2 (skip header) to the last row
    For i = 2 To lastRow
        Dim sectorLabel As String
        sectorLabel = "Sector " & ws.Cells(i, "A").Value
        ' Update SectorName (column B) and SectorShortName (column C)
        ws.Cells(i, "B").Value = sectorLabel
        ws.Cells(i, "C").Value = sectorLabel
    Next i
End Sub

To use this:

  • Press Alt + F11 to open the VBA editor
  • Insert a new module
  • Paste the code above
  • Adjust the sheet name if needed
  • Run the macro

内容的提问来源于stack exchange,提问作者Asad

火山引擎 最新活动