输入参数:from
日期和to
日期
在指定的时间段内打印所有发票。对于每个节目
打印总计行:该期间的发票数量和总金额
SQL加
select invoicenum, sum(invoiceamount) as "totalamount" from invoiceheader;
ERROR at line 1:
ORA-00937: not a single-group group function
答案 0 :(得分:0)
您遇到的错误是,未聚合的列应该是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>
尝试将您刚刚看到的内容应用于案件(家庭作业?)。另外,探索Formatting SQL*Plus Reports的其他方式。