Sybase,SQL:为重复值添加计数器
我试图处理以下情况。我在数据库中有一个条目列表: 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| 你知道怎么处理吗 致以最良好的祝愿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中的重复项,并在每行中添加一个数字,对于重复项,数字应递增,以便我们也获得唯一的条目。每次
德克我想试试这个。我希望这能解决你的问题
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()
callesROWID
的附加值不幸的是,Sybase server的当前版本是15.0.3=>并且不支持ROW_NUMBER():-((