2016-02-13 44 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

相关问题