我不熟悉使用sql进行数据转换。我正在努力用stage=draft或finish获取最新数据。谁能给我一些建议吗?
由此:
Name | Stage | UpdateDate |
-----+---------+------------+
a | draft | 8/17/2014 |
a | draft | 8/25/2014 |
a | finish | 8/25/2014 |
b | draft | 2/14/2015 |
b | draft | 2/15/2015 |
b | draft | 2/16/2015 |
对此:
Name | Stage | UpdateDate |
-----+---------+------------+
a | draft | 8/25/2014 |
a | finish | 8/25/2014 |
b | draft | 2/16/2015 |
3条答案
按热度按时间xlpyo6sf1#
以下假设您需要每个名称/草稿对的最新行(我就是这样理解问题的):
一个简单的方法是关联子查询:
另一个好方法是使用窗口函数:
如果您真的希望所有行的名称都具有最新的总体日期,那么您可以对这些行进行调整。例如:
6yt4nkrj2#
试试这个
结果如下:
uurity8g3#
更新(完整答案):
在sql fiddle中也是如此
top 1在这里使用领带。with ties意味着当order by=1时,select将获取此记录(因为前1条记录)以及order by=1的所有其他记录(因为with ties记录)。