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 に答える