Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 查询最早记录的客户更改日志以确定创建该记录的用户_Sql_Sql Server - Fatal编程技术网

Sql 查询最早记录的客户更改日志以确定创建该记录的用户

Sql 查询最早记录的客户更改日志以确定创建该记录的用户,sql,sql-server,Sql,Sql Server,我试图报告哪些用户在我们的客户表中创建了给定记录。不幸的是,它只显示最后一个修改记录的用户。但是有一个变更日志,所以我需要提取给定客户的最早记录,并提取变更用户的id 所以我有这个: SELECT min(ca.archive_date), ca.cust_no, ca.change_user FROM mi_masdb.dbo.customer_archive ca GROUP BY ca.cust_no 但它不会拉取更改用户,因为每个客户号都有多个更改用户。我只需要它拉取与

我试图报告哪些用户在我们的客户表中创建了给定记录。不幸的是,它只显示最后一个修改记录的用户。但是有一个变更日志,所以我需要提取给定客户的最早记录,并提取变更用户的id

所以我有这个:

SELECT min(ca.archive_date),  
ca.cust_no,  
ca.change_user  
FROM mi_masdb.dbo.customer_archive ca  
GROUP BY ca.cust_no
但它不会拉取更改用户,因为每个客户号都有多个更改用户。我只需要它拉取与每个客户号的最早存档日期关联的更改用户


想法

在GROUPBY子句中添加change_user列。请参阅下文

SELECT min(ca.archive_date),  
ca.cust_no,  
ca.change_user  
FROM mi_masdb.dbo.customer_archive ca  
GROUP BY ca.cust_no, ca.change_user 

这样做的标准方法是使用
行数()

以下可能更快:

select ca.*
from mi_masdb.dbo.customer_archive ca join
     (select ca2.cust_no, min(ca2.archive_date) as min_archive_date
      from mi_masdb.dbo.customer_archive ca2
     ) ca2
     on ca2.cust_no = ca.cust_no and ca2.min_archive_date = ca.archive_date;

隔墙工作得很好。我不得不稍微修改一下,以便将其放入我的工作版本中,但这个概念在我必须进行的其他连接中效果最好。非常感谢。
select ca.*
from mi_masdb.dbo.customer_archive ca join
     (select ca2.cust_no, min(ca2.archive_date) as min_archive_date
      from mi_masdb.dbo.customer_archive ca2
     ) ca2
     on ca2.cust_no = ca.cust_no and ca2.min_archive_date = ca.archive_date;