sql中的价格差异表与日期

时间:2012-08-19 15:06:54

标签: asp.net sql

我的数据库中有以下表格。

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查询以优化此结果。

由于

2 个答案:

答案 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

请参阅SQL Fiddle with a Demo

答案 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;