2012-10-08 107 views
0

我有一個ID(主鍵),名稱,值和branchId作爲列的查找表。目前,我有一組數據,其中branchId與整個記錄相同。我需要爲名稱和值列複製具有相同值的數據,但在同一個表中有不同的branchId值。在查找表中爲列ID的每個唯一值創建重複記錄

任何幫助查詢/腳本來實現這一點,將不勝感激。

在此先感謝!

+0

'id'數據類型'IDENTITY'還是簡單的'INT'? –

回答

1

如果idIDENTITY,它的值將自動生成:

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 
+0

Ypercube ...這讓我更接近。但是並不是硬編碼每個新值(如你的例子中的23),我怎樣才能循環這個值的範圍?是否有可能將其推廣? –

+0

你的意思是你想插入/複製這些行爲多個分支? –

+0

沒錯。分支範圍可以是一組值,例如{1,5,7,9,10}。 –

0

試試這個:

SELECT id, name, value, branchId, 
row_number() over (partition by name, value order by id) new_branch_id 
from tablename 
1
insert into LookupTable 
(
    name, 
    value, 
    branchId 
) 
select 
    name, 
    value, 
    'BranchId2' 
from LookupTable 
where branchId = 'BranchId1' 
+0

正如我對Ypercube所說的那樣,我從你那裏得到了類似的答覆。我們怎樣才能爲一系列價值做到這一點,而不是硬編碼每個新價值?是否有可能將其推廣? –

相關問題