2016-02-13 45 views
-1

我有列數據。我需要在另一列中插入ids。總計我有7個ID。對於前7個值,我必須插入這些ID和接下來的7個值,我必須插入相同的ID等..可以幫助任何人嗎?如何在列中插入七種ID到所有值

Pay_headID Pay_amount 
16414   8000 
16415   300 
16416   0 
16417   200 
16418   500 
16419   0 
16420   0 
16414   9000 
16415   300 
so on ... 
+0

你所說的「對於第7個值,我必須插入這些ID和明年7個價值觀」呢?預期的結果是什麼? – Squirrel

+0

前7個值是pay_amount列中的字段。 pay_amount列中有更多行。我有7個ID。這7個ID我必須維護pay_amount列。前7行,後7行和後7行相同的ID將重複,接下來的7行將重複相同的ID。 –

回答

0

可以使用CTE和ROW_NUMBER,我已經使用順序由Pay_headId:

WITH cte_myTable 
AS (SELECT 
    *, 
    (ROW_NUMBER() OVER (ORDER BY Pay_headID)) - 1 AS num 
FROM myTable) 
UPDATE cte_myTable 
SET [Pay_headID] = 
        CASE 
        WHEN num % 7 = 0 THEN 16414 
        WHEN num % 7 = 1 THEN 16415 
        WHEN num % 7 = 2 THEN 16416 
        WHEN num % 7 = 3 THEN 16417 
        WHEN num % 7 = 4 THEN 16418 
        WHEN num % 7 = 5 THEN 16419 
        WHEN num % 7 = 6 THEN 16420 
        END 
GO 

如果你想使用它是如何插入,你可以設置Pay_headIds爲null排序:

update myTable set Pay_headID=null; 
+0

我在一列中有206192個值。我需要維護一個單獨的列中的id。我總共有7個Ids。對於前7個值需要維護這些ID,接下來的7個值需要保持相同的ID,並且接下來的7個值需要保持相同的7個ID。總共206192我需要重複維護相同的ID。 –

+0

在這種情況下,您希望使用哪種排序來理解哪些記錄器在第一組中,哪些記錄應該在第二組中? –

+0

記錄是按順序排列的。對於前7個值需要給出7個ID,接下來7個值需要給出相同的ID。 –

0

你應該使用RowNum()給你一個人工遞增數字,除以7然後舍入它。

SELECT FLOOR((ROW_NUMBER() OVER(ORDER BY Pay_HeadID DESC))/7) AS MyID 

讓你的IDS

+0

嗨,你能解釋一下嗎?謝謝 –

+0

ROW_NUMBER爲您提供每個記錄的計數器。然後,當你將它除以7並使用FLOOR時,它每7個記錄只給出一個新的數字。這是我以爲你想要的。我不知道你是否想把它們插回到桌子上,或者說,我會把它留給你 – akc42

相關問題