我有一個包含[更新值],[日期],[時間],[電話號碼]和整數自動編號/主鍵列的列表。帶有增量的分組數據的SQL更新
我想將表格更新爲一組,以便將日期和電話號碼分組在一起(即,如果兩個或更多記錄具有相同的日期和電話,則它們是「組」的一部分),但是然後在該組的最早時間記錄中放置一個「1」,然後在該組的最早時間記錄中輸入「2」,等等。
只更新組的計數很簡單, m試圖找出如何使用基於時間排序的增量值更新每個組的牆。
我有一個包含[更新值],[日期],[時間],[電話號碼]和整數自動編號/主鍵列的列表。帶有增量的分組數據的SQL更新
我想將表格更新爲一組,以便將日期和電話號碼分組在一起(即,如果兩個或更多記錄具有相同的日期和電話,則它們是「組」的一部分),但是然後在該組的最早時間記錄中放置一個「1」,然後在該組的最早時間記錄中輸入「2」,等等。
只更新組的計數很簡單, m試圖找出如何使用基於時間排序的增量值更新每個組的牆。
UPDATE yt
SET [update value] = q.RowNum
FROM YourTable yt
INNER JOIN (SELECT PKColumn,
ROW_NUMBER() OVER(PARTITION BY [date], [phone number] ORDER BY [time]) AS RowNum
FROM YourTable) q
ON yt.PKColumn = q.PKColumn;
你也可以用CTE做到這一點:
WITH cteRowNum AS (
SELECT [update value],
ROW_NUMBER() OVER(PARTIION BY [date], [phone number] ORDER BY [time]) AS RowNum
FROM YourTable
)
UPDATE cteRowNum
SET [update value] = RowNum;
看一看的ROW_NUMBER()函數,例如
SELECT
Date,
PhoneNumber,
Time,
ROW_NUMBER() OVER (PARTITION BY Date, PhoneNumber ORDER BY Time ASC) AS IndexInGroup
FROM
MyTable
此行將創建您正在查找的數字。
ROW_NUMBER() OVER (PARTITION BY [phone number], [date] ORDER BY [date] ASC) Time_Sequencer
您使用的是什麼RDBMS /版本? –
SQL Server 2005或2008。 – milkboneUnderwear