我的数据库中有以下表格。
ID DATE HOTEL_NAME PRICE
1 16-01-2012 AA 32.00
2 16-01-2012 BC 45.00
3 16-01-2012 DE 47.00
4 17-01-2012 AA 33.20
5 17-01-2012 BC 43.00
6 17-01-2012 DE 51.40
我想要这样的结果:
ID DATE_1 DATE_2 HOTEL_NAME PRICE_1 PRICE_2 DIFFERENCE
1 16-01-2012 17-01-2012 AA 32.00 33.20 1.20
2 16-01-2012 17-01-2012 BC 45.00 43.00 -2.00
3 16-01-2012 17-01-2012 DE 47.00 51.40 4.40
请告诉我sql查询以优化此结果。
由于
答案 0 :(得分:2)
您没有指定正在使用的RDBMS。但是这个解决方案应该适用于所有这些解决方案:
select t1.id, t1.dt date_1, t2.dt date_2, t1.hotel,
t1.price price_1, t2.price price_2, t1.price - t2.price difference
from test t1
inner join
(
select id, dt, hotel, price
from test
) t2
on t1.hotel = t2.hotel
and t1.dt < t2.dt
答案 1 :(得分:0)
这个查询应该做你想要的事情:
SELECT a.id, a.date, b.date, a.hotel_name, a.price, b.price, (a.price - b.price) FROM table AS a, table AS b WHERE a.hotel_name = b.hotel_name;