【问题标题】:Error in combining 2 SQL Queries together将 2 个 SQL 查询组合在一起时出错
【发布时间】:2014-12-19 08:50:50
【问题描述】:

请看下面的代码

SELECT ongoing_portfolio.*,
Portfolio.Activation
FROM Ongoing_Portfolio
INNER JOIN Portfolio ON Ongoing_Portfolio.idPortfolio = Portfolio.idPortfolio
WHERE ongoing_portfolio.`idPortfolio`= 2 ORDER BY `Updated_Date` DESC LIMIT 4

SELECT SUM(`Transaction_Amount`) AS `Total`
FROM  `transactions`
WHERE `idPortfolio`= 2 AND `Transaction_TimeStamp` <= "2016-12-17"

其实我在这里要做的就是这个。

  1. 获取所有投资组合的财务详情(第一次查询)。
  2. 获取第一个查询引用的特定投资组合的Updated_Date 提到的日期的总交易。 (第二个查询)

现在,我确实需要在一个查询中执行此操作,所以我在下面尝试了。

 SELECT ongoing_portfolio.*,
Portfolio.Activation,
SUM(Transactions.`Transaction_Amount`) AS `Total` WHERE `Transaction_TimeStamp` <= ongoing_portfolio.`Updated_Date`
FROM Ongoing_Portfolio
INNER JOIN Portfolio ON Ongoing_Portfolio.idPortfolio = Portfolio.idPortfolio
INNER JOIN Transactions ON Transactions.`idPortfolio` = Ongoing_Portfolio.idPortfolio
WHERE ongoing_portfolio.`idPortfolio`= 2 ORDER BY `Updated_Date` DESC LIMIT 4

然而,正如它所说的那样,这会产生错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `Transaction_TimeStamp` <= ongoing_portfolio.`Updated_Date`
FROM Ongoing_' at line 3 

我怎样才能成功地进行这一查询?

【问题讨论】:

  • move AND Transaction_TimeStamp` group by,不确定分组部分,因为您没有指定关于在哪一列上进行分组并将总和作为总和(Transactions.Transaction_Amount)

标签: mysql sql join sum inner-join


【解决方案1】:

您不能在检索列中使用 where 条件。 您可以使用 if else 或 when 条件作为总计。

    SELECT ongoing_portfolio.*,
        Portfolio.Activation,
        SUM(case when Transaction_TimeStamp` <= ongoing_portfolio.`Updated_Date` 
            then Transactions.`Transaction_Amount` end) AS `Total` FROM Ongoing_Portfolio
        INNER JOIN Portfolio ON Ongoing_Portfolio.idPortfolio = Portfolio.idPortfolio
        INNER JOIN Transactions ON Transactions.`idPortfolio` = Ongoing_Portfolio.idPortfolio
        WHERE ongoing_portfolio.`idPortfolio`= 2 group by 'Updated_Date' 
ORDER BY `Updated_Date` DESC LIMIT 4

【讨论】:

  • 我在query中做了canges。我现在尝试时忘记写end after case了。
  • 感谢您的回复。 Total 是错误的,似乎它也在计算其他一些投资组合交易..除此之外,我只得到 1 个结果..
  • 您需要在列上进行分组,然后您将获得多个条目。
  • 是的,我试过了,谢谢!还有一个问题,将发布一个新问题。
猜你喜欢
  • 2023-02-08
  • 1970-01-01
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多