我一直在尝试寻找答案,但没有成功。
需要得到:首次购买的价格和最后一次购买的价格并按 SKU 分组。
查询结果应该是这样的:
sku first_purchase_price Last_purchase_price
BC123 3.09 6.68
QERT1 9.09 13.23
My Query
SELECT sku,PRICE,MAX(purchase_DATE),MIN (purchase_DATE)
FROM store
ORDER By sku
继续得到:
SQL Error: ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
or
SQL Error: ORA-00937: not a single-group group function
00937. 00000 - "not a single-group group function"
任何帮助是极大的赞赏。
SKU TRANSAC_ID purchase_DATE PRICE
----------------------------------------------
BC123 CHI0018089 21-OCT-09 6.98
BC123 CHI0031199 11-MAR-13 6.68
BC123 NAP1000890 22-JAN-08 3.09
BC123 NAP1011123 21-DEC-11 89.9
QQQ789 NAP1000891 22-JAN-08 4.01
QERT1 JOL0400090 8-MAR-12 13.23
QERT1 NAP1000990 22-FEB-08 9.09
QERT1 NAP1001890 28-FEB-09 2.09
WW000 CHI0031208 11-MAR-13 200.01
WW000 CHI0031298 11-MAR-13 200.01
YZV11 JOL0200080 10-OCT-06 230.23
YZV11 AUR0700979 14-APR-13 6.68
YZV11 CHI0018189 03-OCT-09 556.98
YZV11 JOL0300080 10-MAR-11 300
您可以利用第一个/最后一个 http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions065.htm#SQLRF51413聚合函数
简化此类查询。
SQL小提琴 http://sqlfiddle.com/#!4/d9ea1/1
Query:
select
sku,
max(price) keep (dense_rank first order by purchase_date) first_purchase_price,
max(price) keep (dense_rank last order by purchase_date) last_purchase_price
from
store
group by
sku;
Results http://sqlfiddle.com/#!4/d9ea1/1/0:
| SKU | FIRST_PURCHASE_PRICE | LAST_PURCHASE_PRICE |
|--------|----------------------|---------------------|
| BC123 | 3.09 | 6.68 |
| QERT1 | 9.09 | 13.23 |
| QQQ789 | 4.01 | 4.01 |
| WW000 | 200.01 | 200.01 |
| YZV11 | 230.23 | 6.68 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)