我有一张包含4个字段和3条记录的表,以下查询可以正常工作,但我希望在分组之前按照a.start_date
排序。
Tabel Name : testdata
Table fields : data type
id: autoincrement,primary key
pattern : varchar
start_date : datetime
cost : decimal(10,5)
记录:
ID | Pattern | Start_date | Cost
1 | 1 | 2013-09-15 | 10.00
2 | 1 | 2013-09-04 | 15.00
3 | 1 | 2013-09-21 | 28.00
查询:
select a.*, b.cost AS future_cost, b.start_date AS future_date
FROM testdata a
LEFT JOIN testdata b ON a.pattern = b.pattern AND a.id <> b.id
GROUP BY a.pattern
当前输出:
id | pattern | start_date | cost | future_date | future_cost
1 | 1 | 2013-09-15 | 10.00| 2013-09-04 | 15.00
所需输出:
id | pattern | start_date | cost | future_date | future_cost
2 | 1 | 2013-09-04 | 15.00| 2013-09-15 | 10.00
我需要的是,在上面的例子中,最早的日期是
2013-09-04
,所以未来的日期将是15
。如果我删除2013-09-04
的记录,则开始日期应为2013-09-15
,未来日期应为2013-09-21
。
我需要查询以获得所需的输出结果?
任何帮助和想法都将不胜感激。
select a.*, b.cost AS future_cost, b.start_date AS future_date FROM example a LEFT JOIN example b ON a.pattern = b.pattern AND a.id <> b.id ORDER BY a.start_date
,那么它会给我这个结果 http://sqlfiddle.com/#!2/e33a1/4 - Ankit Doshi