Sql 查询最早记录的客户更改日志以确定创建该记录的用户
我试图报告哪些用户在我们的客户表中创建了给定记录。不幸的是,它只显示最后一个修改记录的用户。但是有一个变更日志,所以我需要提取给定客户的最早记录,并提取变更用户的id 所以我有这个: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 但它不会拉取更改用户,因为每个客户号都有多个更改用户。我只需要它拉取与
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;