0

我的数据库中有下表。

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 查询。

谢谢

4

2 回答 2

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

请参阅带有演示的 SQL Fiddle

于 2012-08-19T15:38:22.273 回答
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;
于 2012-08-19T15:19:10.403 回答