【问题标题】:SUM, JOIN, GROUP BY, ORDER BY, PARTITION, OVER. What am I missing?求和、加入、分组、排序、分区、结束。我错过了什么?
【发布时间】:2023-03-15 05:56:01
【问题描述】:

我需要一点帮助。我有两张我知道需要加入的表,这不是问题。我需要显示的是发票中购买的所有产品的发票编号、发票日期和总美元金额。信息需要按发票编号降序排列,然后按发票日期升序排列。到目前为止,我正在抛出错误的是:

SELECT          LINE.INV_NUMBER, 
                INVOICE.INV_DATE, 
                SUM(LINE.LINE_PRICE) 
           FROM LINE 
FULL OUTER JOIN INVOICE ON LINE.INV_NUMBER=INVOICE.INV_NUMBER 
       GROUP BY LINE.INV_NUMBER 
       ORDER BY LINE.INV_NUMBER DESC, 
                INVOICE.INV_DATE ASC;

在我拔掉所有头发之前,感谢任何帮助。

更新:

我已将我的声明更新为:

SELECT LINE.INV_NUMBER AS "Line Number", 
       INVOICE.INV_DATE AS "Invoice Date", 
       SUM(LINE.LINE_PRICE) AS "Total Sales" 
  FROM INVOICE FULL OUTER JOIN LINE ON INVOICE.INV_NUMBER=LINE.INV_NUMBER 
 GROUP BY LINE.INV_NUMBER, INVOICE.INV_DATE
 ORDER BY LINE.INV_NUMBER DESC, INVOICE.INV_DATE ASC;

我得到的是数据而不是错误。我现在遇到的问题是我需要按发票编号按降序读取数据,按发票日期按升序读取,所以我假设我需要两个数据输出。我该怎么做?

【问题讨论】:

  • 你遇到了什么错误?
  • 我得到*原因:从第 26 行开始的命令出错:SELECT LINE.INV_NUMBER, INVOICE.INV_DATE, SUM(LINE.LINE_PRICE) FROM LINE LEFT JOIN INVOICE ON LINE.INV_NUMBER=INVOICE.INV_NUMBER GROUP BY LINE.INV_NUMBE ORDER BY LINE.INV_NUMBER DESC,INVOICE.INV_DATE ASC 命令行错误:26 列:139 错误报告:SQL 错误:ORA-00904:“LINE”。“INV_NUMBE”:无效标识符 00904。00000 -“ %s: 无效标识符" *原因:*操作:但我通过将 INVOICE.INV_DATE 放入 Group By 中更改了我的代码,并且正在获取数据。
  • 我现在遇到的问题是我需要按发票编号按降序排序和按发票日期按升序排序的数据,所以我假设我需要两个数据输出.我该怎么做?
  • 为什么不能只运行两个查询?
  • 这是我已经迟到的作业的最后一个问题,它指出必须在一个查询中完成,

标签: sql oracle join group-by sum


【解决方案1】:

我相信只有那些在 group by 中使用的列才能在 select 子句中检索到。

您可能需要包含 INV_DATE、LINE_PRICE,然后在 select 子句中检索它们的聚合。

参考 java2s.com 中的几个分组示例,这是一个有用的站点。

问候, 斯里哈里

【讨论】:

  • 在看到您的帖子之前,我按照您的建议做了,实际上我得到的是数据而不是错误。我现在遇到的问题是我需要按发票编号按降序排序和按发票日期按升序排序的数据,所以我假设我需要两个数据输出。我该怎么做?
【解决方案2】:

试试GROUP BY LINE.INV_NUMBER, INVOICE.INV_DATE

根据您使用的 DBMS,它可能是问题,也可能不是问题。

【讨论】:

  • 在看到您的帖子之前,我按照您的建议做了,实际上我得到的是数据而不是错误。我现在遇到的问题是我需要按发票编号按降序排序和按发票日期按升序排序的数据,所以我假设我需要两个数据输出。我该怎么做?
【解决方案3】:
SELECT LINE.INV_NUMBER AS "Line Number", 
       INVOICE.INV_DATE AS "Invoice Date", 
       SUM(LINE.LINE_PRICE) AS "Total Sales" 
  FROM INVOICE FULL OUTER JOIN LINE ON INVOICE.INV_NUMBER=LINE.INV_NUMBER 
 GROUP BY LINE.INV_NUMBER, INVOICE.INV_DATE
 ORDER BY INVOICE.INV_DATE ASC, LINE.INV_NUMBER DESC;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 2020-02-21
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多