oracle - 打印特定时期的 invoicenum 和总金额的总行
问题描述
输入参数:from
日期和to
日期
在指定的时间段内打印所有发票。每场演出
- 发票编号,
- 发票日期和
- 发票金额
打印总行:该期间的发票数量和总金额
SQL加
select invoicenum, sum(invoiceamount) as "totalamount" from invoiceheader;
ERROR at line 1:
ORA-00937: not a single-group group function
解决方案
你得到的错误说未聚合的列应该是group by
子句的一部分,即
select invoicenum, sum(invoiceamount) as "totalamount"
from invoiceheader
group by invoicenum; --> this is what you are missing
但是,这不会解决您的问题,因为没有WHERE
子句(应该包含日期列)。
因为它是关于 SQL*Plus 的,所以我认为你应该这样做。
我没有你的表,所以我使用 Scott 的示例模式。
首先,按列EMP
排序的所有表行hiredate
:
SQL> select empno, ename, sal, hiredate from emp order by hiredate;
EMPNO ENAME SAL HIREDATE
---------- ---------- ---------- ----------
7369 SMITH 800 1980-12-17
7499 ALLEN 1600 1981-02-20
7521 WARD 1250 1981-02-22
7566 JONES 2975 1981-04-02
7698 BLAKE 2850 1981-05-01
7782 CLARK 2450 1981-06-09
7844 TURNER 1500 1981-09-08
7654 MARTIN 1250 1981-09-28
7839 KING 5000 1981-11-17
7900 JAMES 950 1981-12-03
7902 FORD 3000 1981-12-03
7934 MILLER 1300 1982-01-23
7788 SCOTT 3000 1982-12-09
7876 ADAMS 1100 1983-01-12
14 rows selected.
这是一个使用 where 子句的简单查询(但它仍然不会显示您要查找的内容):
SQL> select empno, ename, sal, hiredate from emp
2 where hiredate between date '1981-04-01' and date '1981-12-31'
3 order by hiredate;
EMPNO ENAME SAL HIREDATE
---------- ---------- ---------- ----------
7566 JONES 2975 1981-04-02
7698 BLAKE 2850 1981-05-01
7782 CLARK 2450 1981-06-09
7844 TURNER 1500 1981-09-08
7654 MARTIN 1250 1981-09-28
7839 KING 5000 1981-11-17
7902 FORD 3000 1981-12-03
7900 JAMES 950 1981-12-03
8 rows selected.
SQL>
但是,如果您使用 SQL*Plus 报告设置,您可能会得到以下结果:
SQL> select empno, ename, sal, hiredate from emp
2 where hiredate between date '1981-04-01' and date '1981-12-31'
3 order by hiredate;
EMPNO ENAME SAL HIREDATE
---------- ---------- ---------- ----------
7566 JONES 2975 1981-04-02
7698 BLAKE 2850 1981-05-01
7782 CLARK 2450 1981-06-09
7844 TURNER 1500 1981-09-08
7654 MARTIN 1250 1981-09-28
7839 KING 5000 1981-11-17
7902 FORD 3000 1981-12-03
7900 JAMES 950 1981-12-03
---------- ----------
8
19975
8 rows selected.
SQL>
尝试将您刚刚看到的内容应用于您的案例(家庭作业?)。此外,探索格式化 SQL*Plus 报告的其他方法。
推荐阅读
- android - 尝试运行命令“flutter run”时出错
- packet - 应用过滤器,使用 tcpdump 读取除 DNS 和 TCP 之外的所有流量
- matplotlib - 如何使轴对象具有与默认图形大小相同的大小?
- python - Python 打印 api 特定值
- object - 包含 9999 多个对象的图库页面
- security - 如何获得带有 CWE 标记的 CVE 数据集?
- c - 全长Hexa值未在C中转换为全长字符串?
- python - 我写了一个从哈希中查找密码的程序,我有一些哈希,但它只写了最后一行。问题是什么
- arrays - 在matlab中重新排序数组维度
- javascript - 更新时重置页面