我有一個表,它有兩列作為鍵(i_number c_id),我需要從它的值生成一個新表,但是生成一個新i_number表,以便新表的第i_number一個特定c_id于原始表max(i_number) 1。c_id另外,我將為第二個表生成一個新的 c_id,但這不是問題。我將其發布為影像,因為資料在問題末尾的小提琴中提供。所以,這是原始表:

給定一個特定的 c_id,比如 001,我將獲得一個新的 c_id(比如 901),并且期望的結果是一個新表,其中包含來自原始表的行具有 c_id = 001,但生成一個新的 i_number(在在這種情況下,它將是 3 1 = 4):

我正在嘗試使用 SELECT... INTO 子句并使用 Identity 函式來完成此操作,但是不能使用 Identity 提供非固定值,也不能使用引數...
SELECT
IDENTITY(INT,
(SELECT MAX(i_number) 1 FROM table_fake WHERE c_id = '001'),
1) AS i_number,
'901' AS c_ooo,
m_value
INTO [table_fake_new]
FROM table_fake
WHERE c_id = '001'
而且我寧愿不使用 sp_executesql 來執行此操作。任何建議將不勝感激
在這里提琴
uj5u.com熱心網友回復:
我相信這就是你想要達到的目標。我只是使用 MAX 和 ROW_NUMBER() 的視窗函式來獲取遞增值:
SELECT MAX(i_number) OVER(ORDER BY (SELECT NULL))
ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS i_number
,'901' AS c_ooo,
m_value
INTO table_fake_new
FROM table_fake WHERE c_id = '001'
uj5u.com熱心網友回復:
也許這對你有幫助。
ROW_NUMBER()
https://docs.microsoft.com/en-us/sql/t-sql/functions/row-number-transact-sql?view=sql-server-ver16
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/492718.html
