【问题标题】:Trying to combine select sum and count statemenents into one (oracle db)尝试将 select sum 和 count 语句合并为一个(oracle db)
【发布时间】:2015-12-23 19:50:37
【问题描述】:

我需要编写一个语句来获取客户总数和所有帐户的总和。我能够单独做每一个,但我不能让它们成为一个陈述。错误信息是什么意思,FROM应该去哪里?

这是贷款总额的报表

SQL> SELECT SUM(amount) as "total"
     FROM loan, borrower
     WHERE borrower.loan_number = loan.loan_number;

这是客户数量的报表

   SQL> SELECT COUNT(*)
        FROM customer;

我已经像这样将它们组合在一起,但我收到一条错误消息,如您所见。

> SQL> SELECT
2  (SELECT COUNT(*) as "Total Customers" from customer)
3  (SELECT SUM(amount) as "Total Loan Values"
4  FROM borrower, loan 
5  WHERE borrower.loan_number = loan.number);
(select sum(amount) as "Total Loan Values"
 *
 ERROR at line 3:
 ORA-00923: FROM keyword not found where expected

【问题讨论】:

    标签: sql oracle select join


    【解决方案1】:

    由于您对customer 的查询仅返回一行,您可以将cross join 与另一个问题一起使用:

    SELECT     SUM(amount) as total, cnt
    FROM       loan
    JOIN       borrower ON borrower.loan_number = loan.loan_number;
    CROSS JOIN (SELECT COUNT(*) AS cnt 
                FROM   customer) 
    

    【讨论】:

      【解决方案2】:

      您可以像下面这样修改您的查询

      SELECT
      (SELECT COUNT(*) as "Total Customers" from customer),
      (SELECT SUM(amount) as "Total Loan Values"
      FROM borrower, loan 
      WHERE borrower.loan_number = loan.number)
      FROM DUAL;
      

      【讨论】:

        【解决方案3】:

        试试这个:

        SELECT
          (SELECT COUNT(*) as "Total Customers" from customer),
          (SELECT SUM(amount) as "Total Loan Values"
          FROM borrower, loan 
          WHERE borrower.loan_number = loan.number)
        FROM DUAL;
        

        你少了一个逗号;此外,您总是需要一个 FROM 子句。如果没有要命名的表,则将 DUAL 用作虚拟对象。

        【讨论】:

          猜你喜欢
          • 2018-07-09
          • 1970-01-01
          • 1970-01-01
          • 2010-10-07
          • 2013-05-31
          • 1970-01-01
          • 2022-07-01
          • 2020-12-12
          • 1970-01-01
          相关资源
          最近更新 更多