我有一个类似于这个 CancelLog 的表
|ID| membrecia| User | DateCancel | Motivo |
| 2| 1 | uS1 | 7/29/2011 | ... |
| 3| 1 | uS2 | 7/30/2011 | ... |
| 6| 1 | uS1 | 8/02/2011 | ... |
| 1| 2 | uS1 | 7/28/2011 | ... |
| 4| 2 | uS2 | 7/30/2011 | .... |
| 5| 2 | uS3 | 8/01/2011 | . |
| 6| 3 | uS1 | 8/02/2011 | . |
我想得到每个会员的最新记录是这样说的
|ID| membrecia| User | DateCancel | Motivo |
| 6| 1 | uS1 | 8/02/2011 | ... |
| 5| 2 | uS3 | 8/01/2011 | . |
| 6| 3 | uS1 | 8/02/2011 | . |
我正在做类似的事情,
select l.membrecia, l.[USER] , l.DateCancel, count(*), max(l.DateCancel)
from CancelLog l
group by l.membrecia, l.[USER], l.DateCancel;
count(*) y max(l.DateCancel)
我只将它们用于信息,它们不会出现在最终查询中
如果它给了我最近的结果,但如果一个会员资格被几个不同的用户“取消”*,它会给我带来所有取消它的用户的数据
|ID| membrecia| User | DateCancel | Motivo |
| 3| 1 | uS2 | 7/30/2011 | ... |
| 6| 1 | uS1 | 8/02/2011 | ... |
| 1| 2 | uS1 | 7/28/2011 | ... |
| 4| 2 | uS2 | 7/30/2011 | .... |
| 5| 2 | uS3 | 8/01/2011 | . |
我想获得像表 2 中所示的记录。
*取消期间,可以更改“原因”,并且由于此更改,会在日志中创建新记录。
从motivo
“临时删除”更改为“最终删除”,因此无论用户如何,我只对最后一次更改感兴趣,但我确实需要最后一个对结果进行更改的用户。
有谁知道我怎么能得到这些日志?
使用窗口功能可以很容易地实现您要查找的内容
row_number()
。不需要使用临时表和循环,这对于这种类型的查询来说过于复杂和昂贵:亲爱的,我做了一个练习,以便能够以您请求的方式获取您请求的数据,我附上我是如何做到的,也许它可以对您有用。问候。
这里是查询。
感谢那些提供帮助的人,但我设法解决它如下
正如你所看到的,我创建了一个子查询,我得到了给定成员的最新 id,从最高到最低排序,得到这个最高的 id,我将它与主查询 id 进行比较,我得到了想要的结果