[研究]T-SQL, 如何把 FieldA 欄位相同的值,其 FieldB 欄位依小到大排序後,在 FieldC 欄位依序給予 A, B, C, D,E,F,G 等值 ?
2024-01-22
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19
********************************************************************************
User
T-SQL, 如何把 FieldA 欄位相同的值,其 FieldB 欄位依小到大排序後,在 FieldC 欄位依序給予 A, B, C, D,E,F,G 等值 ?
ChatGPT
在 T-SQL 中,你可以使用 ROW_NUMBER() 窗口函數來實現根據 FieldA 欄位相同的值,將 FieldB 欄位按升序排序,然後根據排序的結果為每一個相同的 FieldA 賦予相應的 FieldC 值。以下是一個例子:
假設你有一個表格 YourTable,其中包含 FieldA、FieldB 和 FieldC 欄位。你希望根據 FieldA 將 FieldB 按升序排序,然後為每個相同的 FieldA 賦予 FieldC 值,可以使用如下的 T-SQL 查詢:
WITH RankedData AS ( SELECT FieldA, FieldB, ROW_NUMBER() OVER (PARTITION BY FieldA ORDER BY FieldB) AS RowNum FROM YourTable ) UPDATE RankedData SET FieldC = CHAR(64 + RowNum); -- 將 RowNum 轉換為 A, B, C, D, ... |
這個查詢中,使用 ROW_NUMBER() 函數,將每個相同的 FieldA 的行按照 FieldB 升序排序,並將排序後的行數賦予 RowNum。接著,使用 UPDATE 語句將 FieldC 設置為對應的字母值,這裡使用 CHAR(64 + RowNum) 將數字轉換為相應的大寫字母(A, B, C, ...)。
這樣,對於每個相同的 FieldA,FieldC 的值就會根據 FieldB 的升序排序被賦予 A, B, C, D, ... 的值。
(完)
相關
沒有留言:
張貼留言