在sql中重复相同的数字

时间:2018-03-13 15:08:04

标签: sql sql-server sql-server-2008

我有以下问题。 我想要这个SQL Server 2008查询

   select code , name from customer 

我希望在一个单独的列中显示两个或多个相同的数字,如此

   code  name   repeating_numbers
   x1    mike   1
   x1500 George 2
   x200  maria  1
   x2098 john   2
   a9876 mario  1

如果我过滤查询以仅显示我希望看到的M%的客户

   code  name   repeating_numbers
   x1    mike   1
   x200  maria  2
   a9876 mario  1

如果我想看到名字%o%我需要看

   code  name   repeating_numbers
   x1500 George 1
   a9876 mario  2
   x2098 john   1

换句话说,不管过滤器我需要看到未来的数字1,2或3,重复一遍,谢谢高级

1 个答案:

答案 0 :(得分:1)

您可以将ROW_NUMBERmodulus operator (%)

一起使用
SELECT code, name, (ROW_NUMBER() OVER (ORDER BY code ASC) - 1) % 2 + 1 AS repeating_numbers 
FROM customer

同样适用于任何其他数字(如3):

SELECT code, name, (ROW_NUMBER() OVER (ORDER BY code ASC) - 1) % 3 + 1 AS repeating_numbers 
FROM customer

您还可以使用以下内容来避免ORDER BY

SELECT code, name, (ROW_NUMBER() OVER (ORDER BY (SELECT 100)) - 1) % 2 + 1 AS repeating_numbers 
FROM customer
  

演示: http://sqlfiddle.com/#!18/bdae7/6/1