选择group by子句中不存在的列值

时间:2013-06-14 01:43:16

标签: sql oracle oracle-sqldeveloper

我有一张包含以下列

的客户购买记录的表格
CUSTOMER  TRANSDATE  SALENUM  STORE  TRANSTYP  PRICE  
--------  --------- --------- ----- --------- ------
  1     12-FEB-2013    777      O     CASH      7.99
  1     12-FEB-2013    777      O     CASH      6.99
  1     12-FEB-2013    778      O     CARD      9.17
  2     23-APR-2013    987      D     CASH      7.65
  1     15-MAY-2013    1098     T     CARD      2.35

我希望聚合salenum i,e对于每个salenum,我想要总价格,以及商店,transtyp,transdate,客户价值,因为这些对于特定的salenum是相同的

但是,如果我使用

select customer,transdate,salenum,store,transtyp,sum(price) from table1 group by salenum

它显然说不是一个有效的组值。如何获得理想的结果?

样本结果:

CUSTOMER  TRANSDATE  SALENUM  STORE  TRANSTYP  PRICE  
--------  --------- --------- ----- --------- ------
  1     12-FEB-2013    777      O     CASH      15.98
  1     12-FEB-2013    778      O     CARD       9.17

2 个答案:

答案 0 :(得分:1)

所有非聚合列应位于以下组中:

select customer,transdate,salenum,store,transtyp,sum(price)
from table1 
group by customer,transdate,salenum,store,transtyp

答案 1 :(得分:0)

SELECT CUSTOMER,TRANSDATE,SALENUM,STORE,TRANSTYP,SUM(PRICE)
FROM TABLE1
GROUP BY CUSTOMER,TRANSDATE,SALENUM,STORE,TRANSTYP
ORDER BY CUSTOMER

我使用order by子句,因为它将按顺序排列。