Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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
Sql server 2008 r2 从SQL表的多列生成唯一的整数ID_Sql Server 2008 R2_Group By_Uniqueidentifier_Netezza - Fatal编程技术网

Sql server 2008 r2 从SQL表的多列生成唯一的整数ID

Sql server 2008 r2 从SQL表的多列生成唯一的整数ID,sql-server-2008-r2,group-by,uniqueidentifier,netezza,Sql Server 2008 R2,Group By,Uniqueidentifier,Netezza,我需要在sql数据库的表中生成一个新列 下表为: id1 value1 value2 value3 value4 9465 387 801 1990 20 所有列都是整数。值1和值2始终为3位数字,值3为年份值,值4不超过3位数字 我需要通过组合value1到value4来生成一个值,假设它被称为“value\u combine”。“价值组合”应该是唯一的。例如,给定值1到值4的不同组合,“值\u combine”也应该不同

我需要在sql数据库的表中生成一个新列

下表为:

id1     value1    value2    value3    value4
9465    387        801      1990        20
所有列都是整数。值1和值2始终为3位数字,值3为年份值,值4不超过3位数字

我需要通过组合value1到value4来生成一个值,假设它被称为“value\u combine”。“价值组合”应该是唯一的。例如,给定值1到值4的不同组合,“值\u combine”也应该不同

然后,将“值\u combine”与id1组合,这样新值(我们称之为final\u id)应该是唯一的

例如,给定id1和value_combine的不同组合,final_id也应该不同

最终_id可用于识别id1和value1-4的每个唯一组合

最终\u id必须是整数,并且所有值应具有相同的数字长度,例如6、7或8位


任何帮助都将不胜感激。

也许我遗漏了什么,但听起来像是一个
稠密的等级()

SELECT id1,value1,value2,value3,value4
      ,DENSE_RANK() OVER(ORDER BY id1,value1,value2,value3,value4)+100000 AS final_ID
FROM YourTable 

有一种叫做鸽子洞原理的东西说,这是不可靠的:。你能不能添加一个示例来说明你想要的输出?我同意戈登的观点。
bigint
可能足够大以适应这种方案(取决于
id1
的范围),但
int
则不然。不过我很好奇:你为什么要这么做?这似乎是一组奇怪的要求。如果value1-4相同,但id1不同,那么如果我们使用ROW\u NUMBER(),则值\u combine将相同。谢谢@GoatCO。实际上,我认为你的意思是
densite\u rank()
,而
分区中的列都应该按
顺序排列。我仍然不确定这是否真的能回答老年退休金计划的问题,但它至少能为每个组合提供一个唯一的数字。@GordonLinoff确实,谢谢,brain已经离开了大楼。不管怎么说,我似乎已经错过了OP的目标。