获取SQL异常,想知道如何正确编写此查询?

时间:2019-06-09 13:50:39

标签: mysql

由于语法错误,我正在为此查询获取SQL异常,并且想知道如何编写此查询?

我正在使用MySQL 5,并在Java中使用spring来使用此查询。

SELECT
  MAX
  (
      nivpof_buystock.price*
      (
        SELECT
          no_of_shrs
        FROM nivpof_sellstock
        WHERE p_id=sellpid
          AND AUDIT_DATE_TIME=udate
      )
  )
  INTO acquisition_cost
FROM nivpof_buystock,nivpof_sellstock
WHERE nivpof_buystock.P_ID=sellpid
  ;
  IF
  (
      (
          (
            SELECT
              MAX(DATE)
            FROM nivpof_buystock
            WHERE (sc_code=company_code AND STATUS='Y' AND user_id=userid)
          )
          <'2018-01-31'
      )
      AND
      (
        SELECT
          DATEDIFF
          (
              (SELECT MAX(DATE) FROM nivpof_sellstock WHERE (sc_code=company_code AND STATUS='Y' AND user_id=userid)),
              (
                SELECT
                  MAX(DATE)
                FROM nivpof_buystock
                WHERE (sc_code=company_code AND STATUS='Y' AND user_id=userid)
              )
          )
          >365
      )
  )
  THEN
SELECT
  MAX
  (
    SELECT
      CLOSE_PRICE
    FROM niv_companystockdetails
    WHERE
      (
          sc_code=company_code
          AND DATE='2018-01-31'
      )
      *
      (
        SELECT
          no_of_shrs
        FROM nivpof_sellstock
        WHERE p_id=sellpid
          AND AUDIT_DATE_TIME=udate
      )
  )
  INTO acquisition_cost
FROM nivpof_buystock,nivpof_sellstock
WHERE nivpof_buystock.P_ID=sellpid
ENDIF;

例如buyprice = 5,buydate = 2017-01-24,selldate = 2018-02-25,收盘价2018-01-31 = 10。

所以在这里我要检查(buydate <2018-01-24 AND selldate-buydate> 365days and closepriceof 2018-01-31> buyprice)然后 buyprice = closepriceof 2018-01-31;

1 个答案:

答案 0 :(得分:0)

通常,Java一次只运行一个SQL语句,而不是多个(批处理除外)。

如果您查看查询,则尝试运行多个句子(在其中看到了;吗?),同时还尝试向其中添加一些插入逻辑(IF / {{1 }}。

我建议您分别运行每个SQL语句。那应该可以解决问题。