Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sybase,SQL:为重复值添加计数器_Sql_Sybase_Increment - Fatal编程技术网

Sybase,SQL:为重复值添加计数器

Sybase,SQL:为重复值添加计数器,sql,sybase,increment,Sql,Sybase,Increment,我试图处理以下情况。我在数据库中有一个条目列表: Col 1 | Col 2| ------|------| aaaa | x | aaaa | x | bbbb | y | cccc | z | cccc | z | 第1列|第2列| ------|------| aaaa | x| aaaa | x| bbbb | y| 中交| z| 中交| z| 目标是识别列1中的重复项,并在每行中添加一个数字,对于重复项,数字应递增,以便我们也获得唯一的条目。每次

我试图处理以下情况。我在数据库中有一个条目列表:

Col 1 | Col 2| ------|------| aaaa | x | aaaa | x | bbbb | y | cccc | z | cccc | z | 第1列|第2列| ------|------| aaaa | x| aaaa | x| bbbb | y| 中交| z| 中交| z| 目标是识别列1中的重复项,并在每行中添加一个数字,对于重复项,数字应递增,以便我们也获得唯一的条目。每次新输入后,计数器应再次从1开始

Col 1 | Col 2 | --------|-------| aaaa-1 | x | aaaa-2 | x | bbbb-1 | y | cccc-1 | z | cccc-2 | z | 第1列|第2列| --------|-------| aaaa-1 | x| aaaa-2 | x| bbbb-1 | y| cccc-1|z| cccc-2|z| 你知道怎么处理吗

致以最良好的祝愿


德克

我想试试这个。我希望这能解决你的问题

     SELECT COL1 + ' - ' + ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL1) as COL_A
          , COL2 AS COL_B
     FROM TABLE 
根据您使用的DBMS,您可能必须强制转换
行号()。我在Oracle 11.2上试过,它运行正常:

   SELECT  COL1 || ' - ' || ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL1)  AS COL_A
         , COL2 AS COL_B
   FROM TABLENAME 

你好,德克,

WITH cte
     AS (SELECT Col1,Col2,ROW_NUMBER() OVER (PARTITION BY Col1,Col2 
                                       ORDER BY ( SELECT 0)) RN
         FROM   tableName)
select Col1+'-'+convert(varchar,rn) as Col1,Col2 FROM cte

谢谢:)

到目前为止您尝试了什么?您使用的是哪种Sybase RDBMS产品(ASE、SQLAnywhere、IQ、Advantage)?您在评论(下面)中表示您尝试了游标和while循环/临时表;考虑将这些尝试的解决方案添加到你原来的问题…调整现有内容可能比从头开始更容易(特别是因为您没有提供任何关于表/列名的详细信息)。我用光标尝试了一下,但不知怎的,最后还是卡住了,没有可用的结果。之后,我尝试将while循环与临时表结合起来。还有一个死胡同:-(您可能很幸运,他们面临着相同的问题,并且在Sybase上可能存在一个到
ROW_NUMBER()
calles
ROWID
的附加值不幸的是,Sybase server的当前版本是15.0.3=>并且不支持ROW_NUMBER():-((