【发布时间】:2019-11-04 14:24:31
【问题描述】:
以下是我的查询。无论如何要使用不同级别的组级别。我需要获取 product_count 列来计算 Product_id 的不同,但不是 account_id and acct_type_id level。
目前 product_count 列每行都为 1。我只需要获得不同数量的产品 ID,并且需要在 account_id,product_id, acct_type_id 级别汇总的短期和长期销售。
所以我希望输出是这样的:
order_date account_id short_sales long_sales **product_count** price product_id acct_type_id <br>
31-Oct-19 6698777 -2800 500 **0** 30 100005 3 <br>
31-Oct-19 6998874 -4000 325 **0** 30 100005 2 <br>
31-Oct-19 5555555 -5000 1000 **0** 30 100005 3 <br>
31-Oct-19 4444444 -1000 5000 **1** 30 100005 2
select POS.ORDER_DATE,
POS.ACCOUNT_ID,
SUM(POS.SHORT_SALES) as SHORT_SALES,
SUM(POS.LONG_SALES) as LONG_SALES,
COUNT(Distinct POS.PRODUCT_ID) AS PRODUCT_COUNT,
POS.PRICE,
POS.PRODUCT_ID,
POS.ACCT_TYPE_ID
from PRODUCT
(
SELECT P.ORDER_DATE, P.ACCOUNT_ID, P.PRODUCT_ID, P.ACCT_TYPE_ID,P.PRICE,case when P.POSITION_SD < 0 THEN P.NET_POSITION_SD END AS SHORT_SALES,
case when P.POSITION_SD > 0 THEN P.NET_POSITION_SD END AS LONG_SALES
FROM PRODUCT P
WHERE P.POSITION_DATE = '31-OCT-19'
) POS
group by POS.ORDER_DATE, POS.ACCOUNT_ID, POS.PRODUCT_ID, POS.ACCT_TYPE_ID,POS.PRICE
ORDER BY PRODUCT_ID
【问题讨论】:
标签: sql oracle count grouping distinct