2016-03-30 6 views
0

Как это сделать? Я потерян.Сравнение 2 строк + группировка Mysql

╔════════╦══════════╦══════════╗ 
║ ITEM ║ PRICE ║ DATE  ║ 
╠════════╬══════════╬══════════╣ 
║ Dollar ║  60 ║ 1.3.2016 ║ 
║ Dollar ║  50 ║ 2.3.2016 ║ 
║ Bound ║  100 ║ 1.3.2016 ║ 
║ Bound ║  110 ║ 2.3.2016 ║ 
║ Euro ║  600 ║ 1.3.2016 ║ 
║ Euro ║  580 ║ 3.3.2016 ║ 
╚════════╩══════════╩══════════╝ 

Вывод должен отображать один элемент из каждого типа с последней ценой и разницей в цене от предыдущего ряда

╔════════╦══════════╦════════════════════════╗ 
║ ITEM ║ PRICE ║ DATE  ║ Differnece ║ 
╠════════╬══════════╬════════════════════════╣ 
║ Dollar ║  50 ║ 2.3.2016 ║ -10  ║ 
║ Bound ║  110 ║ 2.3.2016 ║ 10  ║ 
║ Euro ║  580 ║ 3.3.2016 ║ -20  ║ 
╚════════╩══════════╩════════════════════════╝ 
+0

Что собственно вопрос? –

+0

К сожалению, вы можете увидеть его сейчас – gaidi

+0

Что вы пробовали? Если ответ - это не что иное, как думать «я потерян», тогда вам нужно нанять программиста, чтобы сделать это за вас. –

ответ

0
select name as 'Item', 
     price as 'Price', 
     (select max(date) from table where name like '%dollar%') as 'Date', 
     (select top 1 price from table where name like '%dollar%') - (select top 1 price from table where id< (select max(id) from table where name like '%dollar%')and name like '%dollar%' order by id desc) as 'difference' 
     from table where name like '%dollar%' 
union all --now just repeat the code above and switch the like as you want 
select name as 'Item', 
     price as 'Price', 
     (select max(date) from table where name like '%bound%') as 'Date', 
     (select top 1 price from table where name like '%bound%') - (select top 1 price from table where id< (select max(id) from table where name like '%bound%')and name like '%bound%' order by id desc) as 'difference' 
     from table where name like '%bound%' 
+0

Это будет медленный запрос xD, если вы хотите что-то быстро нанять программиста – Lucas

+0

, это не сработало. – gaidi

Смежные вопросы