2016-03-30 64 views
-4

我该怎么做?我有这个表分组+行差异? php 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 ║ 
╚════════╩══════════╩══════════╝ 

输出应该从每个类型与最后日期和前一行差价最后价格dedepnding显示一个项目,像这样

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

这是我做的,但它是抛出错误

SELECT a.item, a.price, a.date, a.price - b.price AS difference 
FROM (SELECT t1.item, t1.price, t1.date 
     FROM yourTable AS t1 
     JOIN (SELECT item, MAX(date) AS maxdate 
      FROM yourTable 
      GROUP BY item) AS t2 
     ON t1.item = t2.item, t1.date = t2.maxdate) AS a 
JOIN (SELECT t1.item, t1.price, t1.date 
     FROM yourTable AS t1 
     JOIN (SELECT item, MIN(date) AS mindate 
      FROM yourTable 
      GROUP BY item) AS t2 
     ON t1.item = t2.item, t1.date = t2.mindate) AS b 

这是错误

1064 - 您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的正确语法手册“.maxdate)为连接(SELECT t1.item_type,t1.purchasing_price,t1.date_price”在第7行

+0

你尝试过什么吗?请告诉我们你的代码。 – arman1991

+0

不是真的,我不是真的是程序员 – gaidi

+2

听起来你需要聘请一个真正的程序员,你不可能期望来这里,并让我们在每次需要写入查询时都这样做。 – Barmar

回答

0

写一个子查询拿到第一排的每个项目,而另一个子查询,以获得最后一行对每个项目,加入他们的行列中减去。

SELECT a.item, a.price, a.date, a.price - b.price AS difference 
FROM (SELECT t1.item, t1.price, t1.date 
     FROM yourTable AS t1 
     JOIN (SELECT item, MAX(date) AS maxdate 
      FROM yourTable 
      GROUP BY item) AS t2 
     ON t1.item = t2.item, t1.date = t2.maxdate) AS a 
JOIN (SELECT t1.item, t1.price, t1.date 
     FROM yourTable AS t1 
     JOIN (SELECT item, MIN(date) AS mindate 
      FROM yourTable 
      GROUP BY item) AS t2 
     ON t1.item = t2.item, t1.date = t2.mindate) AS b 
+0

我得到这个错误 #1064 - 你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在'.maxdate AS a JOIN'附近使用正确的语法(在第7行选择t1.item_type,t1.purchasing_price,t1.date_price') – gaidi

+0

看起来像你遗漏了'''在't2.maxdate'之后。 – Barmar

+0

好吧我现在需要做,我该如何聘请程序员? – gaidi