2017-04-22 105 views
-1

我想写一个SQL查询输出产品的识别号码(p_id),以及去年(2016年)销售的数量和生成的美元金额。如何处理错误1064?

下面是我的代码

mysql> select id, 
    -> sum(quantity) as Quantity_Sold 
    -> sum(amt_paid) as Purchase 
    -> from transaction 
    -> where order_date like '%2016%' 
    -> group by p_id; 

以下是表我试图查询形式

select * from transaction; 
+------+------+------+------------+---------------+----------+------+----------+ 
| T_ID | P_ID | ID | ORDER_DATE | DELIVERY_DATE | QUANTITY | SP | AMT_PAID | 
+------+------+------+------------+---------------+----------+------+----------+ 
| T1 | P1 | C2 | 2001-01-16 | 2001-02-01 |  2 | 100 |  200 | 
| T10 | P11 | C11 | 2001-06-13 | 2001-06-20 |  3 | 25 |  75 | 
| T100 | P11 | C11 | 2004-12-06 | 2004-12-11 |  6 | 25 |  150 | 
| T101 | P6 | C3 | 2005-01-07 | 2005-01-12 |  1 | 35 |  35 | 
| T102 | P3 | C4 | 2005-01-11 | 2005-01-16 |  4 | 120 |  480 | 
| T103 | P12 | C5 | 2005-01-26 | 2005-01-31 |  3 | 90 |  270 | 

它提供了以下错误 错误1064(42000):你有一个错误的SQL语法;检查对应于你的MySQL服务器版本在线路附近使用“总和(数量)的数量 总和(amt_paid)作为购买 其中order_date的LIKE‘%2016’正确的语法手册2

enter code here 
+0

看起来像是在quanity_sold之后缺少一个逗号。 –

回答

0

你缺少一个逗号。但是,从逻辑的角度来看,你需要得到group byselect匹配:

select p_id, sum(quantity) as Quantity_Sold, sum(amt_paid) as Purchase 
from transaction 
where order_date >= '2016-01-01' and order_date < '2017-01-01' 
group by p_id; 

另外,在日采用like是一个非常糟糕的主意。您应该在日期上使用日期函数,并对字符串使用like

+0

谢谢Gordan,看来我所指的书有印刷错误。是的,我尝试使用WHERE和BETWEEN语句来处理日期,但我认为错过的逗号导致了错误。非常感谢。 – Nikhil

+0

@Nikhil。 。 。当我说在图书中获得正确的代码真的非常困难时,我会从经验中谈论。 –

+0

耶!那就对了 – Nikhil