我有一個ID(主鍵),名稱,值和branchId作爲列的查找表。目前,我有一組數據,其中branchId與整個記錄相同。我需要爲名稱和值列複製具有相同值的數據,但在同一個表中有不同的branchId值。在查找表中爲列ID的每個唯一值創建重複記錄
任何幫助查詢/腳本來實現這一點,將不勝感激。
在此先感謝!
我有一個ID(主鍵),名稱,值和branchId作爲列的查找表。目前,我有一組數據,其中branchId與整個記錄相同。我需要爲名稱和值列複製具有相同值的數據,但在同一個表中有不同的branchId值。在查找表中爲列ID的每個唯一值創建重複記錄
任何幫助查詢/腳本來實現這一點,將不勝感激。
在此先感謝!
如果id
是IDENTITY
,它的值將自動生成:
INSERT INTO tableX --- the name of your table
(name, value, branchID)
SELECT
name, value, 23 --- branch to be added
FROM
tableX
WHERE
branchID = 12 ; --- the existing branch
對於一組branchID值,你可以CROSS
加入到現有的表(或創建一個在飛行):
INSERT INTO tableX
(name, value, branchID)
SELECT
t.name, t.value, ins.branchID
FROM
tableX AS t
CROSS JOIN
(VALUES
(1), (5), (7), (9), (10) --- branchIDs to be inserted
) AS ins (branchID)
WHERE
t.branchID = 12 ; --- the existing branchID
Ypercube ...這讓我更接近。但是並不是硬編碼每個新值(如你的例子中的23),我怎樣才能循環這個值的範圍?是否有可能將其推廣? –
你的意思是你想插入/複製這些行爲多個分支? –
沒錯。分支範圍可以是一組值,例如{1,5,7,9,10}。 –
試試這個:
SELECT id, name, value, branchId,
row_number() over (partition by name, value order by id) new_branch_id
from tablename
insert into LookupTable
(
name,
value,
branchId
)
select
name,
value,
'BranchId2'
from LookupTable
where branchId = 'BranchId1'
正如我對Ypercube所說的那樣,我從你那裏得到了類似的答覆。我們怎樣才能爲一系列價值做到這一點,而不是硬編碼每個新價值?是否有可能將其推廣? –
'id'數據類型'IDENTITY'還是簡單的'INT'? –