Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 如何为SQL Server中的相似记录生成相同的组ID_Sql Server_Tsql - Fatal编程技术网

Sql server 如何为SQL Server中的相似记录生成相同的组ID

Sql server 如何为SQL Server中的相似记录生成相同的组ID,sql-server,tsql,Sql Server,Tsql,我有一个带有地址和日期的表,对于每个具有相同地址和日期的记录,我需要一个唯一的ID。以下是我需要它的外观: Address | Date | Group_id -------------------------------------- 12 address 1-1-2014 1 14 address 1-2-2014 2 14 address 1-2-2014

我有一个带有地址和日期的表,对于每个具有相同地址和日期的记录,我需要一个唯一的ID。以下是我需要它的外观:

     Address       |  Date    |  Group_id
     --------------------------------------
     12 address      1-1-2014       1
     14 address      1-2-2014       2
     14 address      1-2-2014       2
     14 address      1-2-2014       2
     12 address      1-3-2014       3
     12 address      1-3-2014       3
     13 address      1-4-2014       4
     13 address      1-4-2014       4
问题在于(按地址、日期分区)上的行数()给出了以下结果:

     Address       |  Date    |  Group_id
     --------------------------------------
     12 address      1-1-2014       1
     14 address      1-2-2014       1
     14 address      1-2-2014       2
     14 address      1-2-2014       3
     12 address      1-3-2014       1
     12 address      1-3-2014       2
     13 address      1-4-2014       1
     13 address      1-4-2014       2
此外,densite_Rank()返回组ID的所有1


想法?

您可以使用

试试这个

SELECT Address,Date,Dense_Rank() OVER(Order by Address, Date) 
FROM Table1
declare @table table(address varchar(100), datecol datetime)
insert into @table 
select '12 address','1-1-2014' union all
select '14 address','1-2-2014' union all
select '14 address','1-2-2014' union all
select '14 address','1-2-2014' union all
select '12 address','1-3-2014' union all
select '12 address','1-3-2014' union all
select '13 address','1-4-2014' union all
select '13 address','1-4-2014'


SELECT Address,Datecol,Dense_Rank() OVER(Order by Datecol, Address) Group_ID
FROM @table 

您可以使用

试试这个

SELECT Address,Date,Dense_Rank() OVER(Order by Address, Date) 
FROM Table1
declare @table table(address varchar(100), datecol datetime)
insert into @table 
select '12 address','1-1-2014' union all
select '14 address','1-2-2014' union all
select '14 address','1-2-2014' union all
select '14 address','1-2-2014' union all
select '12 address','1-3-2014' union all
select '12 address','1-3-2014' union all
select '13 address','1-4-2014' union all
select '13 address','1-4-2014'


SELECT Address,Datecol,Dense_Rank() OVER(Order by Datecol, Address) Group_ID
FROM @table 
试试这个

SELECT Address,Date,Dense_Rank() OVER(Order by Address, Date) 
FROM Table1
declare @table table(address varchar(100), datecol datetime)
insert into @table 
select '12 address','1-1-2014' union all
select '14 address','1-2-2014' union all
select '14 address','1-2-2014' union all
select '14 address','1-2-2014' union all
select '12 address','1-3-2014' union all
select '12 address','1-3-2014' union all
select '13 address','1-4-2014' union all
select '13 address','1-4-2014'


SELECT Address,Datecol,Dense_Rank() OVER(Order by Datecol, Address) Group_ID
FROM @table 
试试这个

SELECT Address,Date,Dense_Rank() OVER(Order by Address, Date) 
FROM Table1
declare @table table(address varchar(100), datecol datetime)
insert into @table 
select '12 address','1-1-2014' union all
select '14 address','1-2-2014' union all
select '14 address','1-2-2014' union all
select '14 address','1-2-2014' union all
select '12 address','1-3-2014' union all
select '12 address','1-3-2014' union all
select '13 address','1-4-2014' union all
select '13 address','1-4-2014'


SELECT Address,Datecol,Dense_Rank() OVER(Order by Datecol, Address) Group_ID
FROM @table 

我忘了说我也试过了。对于组id,结果都是1。我把它放在问题中是为了消除将来对它的任何混淆。谢谢。@Min,为什么您认为这个查询不能满足您的要求?当我使用densite_Rank并按地址和日期对它进行分区时,结果都是1,而不是每个like记录的唯一ID。@Min我在答案中没有看到
分区。你为什么用它?我的错误,我已经做了一段时间了,我不假思索地添加了分区。谢谢大家的帮助,效果很好。我忘了说我也试过了。对于组id,结果都是1。我把它放在问题中是为了消除将来对它的任何混淆。谢谢。@Min,为什么您认为这个查询不能满足您的要求?当我使用densite_Rank并按地址和日期对它进行分区时,结果都是1,而不是每个like记录的唯一ID。@Min我在答案中没有看到
分区。你为什么用它?我的错误,我已经做了一段时间了,我不假思索地添加了分区。谢谢大家的帮助,效果很好。你能发布数据的样本预期结果吗?不清楚您希望group id返回什么值。第一个表就是我想要的。请注意,只有当地址和日期相同时,ID才是唯一的。您可以发布数据的示例预期结果吗?不清楚您希望group id返回什么值。第一个表就是我想要的。请注意,只有当地址和日期相同时,ID才是唯一的。