table is rpt custID dates stores 111089 2015-09-28 103 111089 2015-06-19 119 111089 2015-10-11 106 555555 2015-05-02 103 555555 2015-08-21 125 555555 2015-09-20 125 123456 2015-01-01 119 123456 2015-05-13 116 123456 2015-09-15 120 123456 2015-08-29 115 result should be custID dates store 111089 2015-06-19 119 555555 2015-05-02 103 123456 2015-01-01 119 the table is a very big table and I need all custID and store with the earliest date. like the result above. only one row per custID
回答
您可以在客户ID一个PARTITION
和排序按日期与窗口函数做到这一点:
;With Cte As
(
Select *, Row_Number() Over (Partition By CustID Order By Dates Asc) As Row_Number
From rpt
)
Select custID, dates, stores
From Cte
Where Row_Number = 1
太好了。惊人。它的作品像一个魅力。非常感谢你。你为我节省了很多时间。 rpt是同一张表上的一个选择,所以我只是将选择放在那里,它只是工作。简直太神奇了。再次感谢..... –
SELECT rpt.custid, rpt.date, rpt2.stores
FROM (select r.custid, min(r.DATE) as 'Date'
from rpt r
group by r.custid) rpt
left join (select r.custid, r.DATE, r.stores
from rpt r) rpt2 on rpt2.custid = rpt.custid and rpt2.date = rpt.date
这将产生正确的结果,但过于复杂,性能将受到影响,因为您必须用相同的数据两次查询相同的数据。 –
通过创建/填充cte然后查询它,数据被击中两次,对吗?我对性能差异感到好奇......如果你能详细说明,将不胜感激。 –
因为cte不会在第二个select语句所在的位置导致第二个表扫描。我将以一个sqlfiddle作为例子。然后你可以在你的系统上试用它,你会明白我的意思。 –
- 1. 挑选最早的日期记录
- 2. 获得通过的日期时间最后一排的SQL Server
- 3. 如何查找存储在SQL Server 2008中的表中最早的记录?
- 4. 最近2条记录之间的日期范围Sql Server 2008
- 5. 如何获取记录从日期到日期的SQL Server
- 6. 如何以最早的日期返回记录?
- 7. 如何FINDE插入记录的日期在SQL Server 2008
- 8. 如何获得使用SQL Server 2008一周的开始日期
- 9. SQL Server 2008:如何更新以前记录的结束日期列
- 10. 获得最早日期为每个ID
- 11. SQL查询来获取最早日期
- 12. 在SQL Server中的两个日期之间获得编号2008
- 13. 以MAX日期获得记录
- 14. SQL Server存储过程添加新记录时转储最早的X记录
- 15. C#或SQL Server - 如何从多个日期表中获取最早或最晚的日期?
- 16. 如何从sql server 2008中获取表中的唯一记录
- 17. SQL加入以获得最新记录
- 18. 如何获得的记录数在SQL
- 19. 如何获得每个日期的活动记录在SQL
- 20. 使用SQL从表中查找指定记录的最早和最后日期
- 21. 如何获取最早的日期sql的平均值?
- 22. 如何获得特定日期的最早时间数据?
- 23. 如何在SQL Server 2008中选择以前的记录
- 24. 通过连续更多日期排序最早的日期
- 25. SQL Server 2008编写TSQL以在早期版本中运行
- 26. 不能通过日期从数据库中获取记录
- 27. SQL Server 2008搜索日期
- 28. 如何通过日期获得汇率?
- 29. SQL Server - 如何根据两个表中的日期显示最近的记录
- 30. 如何在SQL Server 2008中透视数据以获得期望的结果?
看一看这个类似的[问题](http://stackoverflow.com/questions/3800551/select-first-row-in-each-group-by-group)。 –