我已经获得了以下数据集,并且需要将其设置为每人每个产品ID每天显示一行的级别。最终目标是能够将基于tranTime的第一个PreviousStat与最新的currentStat进行比较。
tranDate productID tranTime previousSTAT currentSTAT FIRSTNAME
20140221 47444 10533900 NULL U SHAUN
20140221 47444 10553700 U U SHAUN
20140304 47444 11133300 U U TIMOTHY
20140304 47444 11204900 U U TIMOTHY
20140305 47444 9133300 U Y TIMOTHY
20140305 47444 9204900 Y Y TIMOTHY
如下所示:
tranDate productID previousSTAT currentSTAT FIRSTNAME
20140221 47444 NULL U SHAUN
20140304 47444 U U TIMOTHY
20140305 47444 U Y TIMOTHY
人们可以提供的任何帮助都将受到赞赏。
此致 Gabbaii
答案 0 :(得分:0)
如何为您感兴趣的每个组分配行号,以便第一行代表第一行?然后再次执行相同操作,但使用反向排序,以便第一行代表最后一行。然后将这两个表连接在一起。类似的东西:
With minvalues as
(Select tranDate,productId, previousStat, firstname, row_number()
over (partition by tranDate,productId, firstname order by tranTime asc as rownum)
With maxvalues as
(Select tranDate,productId, currentStat, firstname, row_number()
over partition by tranDate,productId,firstname order by tranTime desc as rownum)
Select min.tranDate,min.productId,min.Previousstat, max.currentStat, min.firstname
From minvalues as min inner join maxvalues as max
on min. tranDate = max.tranDate
and min.productId = max.productId
and min.firstname = max.firstname
and min.rownum = 1
and max.rownum = 1