首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Oracle中提取的值进行分组

对Oracle中提取的值进行分组
EN

Stack Overflow用户
提问于 2018-07-31 01:21:17
回答 2查看 47关注 0票数 0

我正在尝试对提取值进行分组。我通过提取案例来创建本季度的开始。我正在尝试将此标识符添加到我的团购中,当在oracle服务器上的Toad中运行时,我收到错误" Sales_Quarter“无效标识符。

代码语言:javascript
复制
with c_prod as (select prod_id_pri, prod_desc,prod_num from rm_mrb.V_PRODUCT_PROD_LIST)
select 'Excluded' as Status, tr.product_id, prod.prod_desc,
 sum(tr.QUANTITY) QUANTITY,  sum(total_Prescriptions) Total_#_OF_PRESCRIPTIONS, count(*) Claims
,CASE 
            When 
                EXTRACT(MONTH FROM Tr.Fill_Date) IN ( 
                    '1', 
                    '2', 
                    '3' )
                THEN
                    '01-01-'||EXTRACT(Year FROM Tr.Fill_Date)
            When 
                EXTRACT(MONTH FROM Tr.Fill_Date) IN ( 
                    '4', 
                    '5', 
                    '6' )
                THEN
                    '04-01-'||EXTRACT(Year FROM Tr.Fill_Date)
            When 
                EXTRACT(MONTH FROM Tr.Fill_Date) IN ( 
                    '7', 
                    '8', 
                    '9' )
                THEN
                    '07-01-' ||EXTRACT(Year FROM Tr.Fill_Date)
            ELSE '10-01-'||EXTRACT(Year FROM Tr.Fill_Date)
    End As Sales_Quarter
  from VALIUSER.ivd_transaction_record_details RD, valiuser.IVD_TRANSACTION_RECORDS TR
  left join c_prod prod on (tr.product_id=prod.prod_id_pri)
  where TR.transaction_record_id=RD.transaction_record_id
  and status='1'
  and tr.File_id in (1765)
  group by Status,Product_id,prod.prod_desc,Sales_Quarter
EN

回答 2

Stack Overflow用户

发布于 2018-07-31 01:44:51

您可以按年份和季度进行分组

代码语言:javascript
复制
group by Status,Product_id,prod.prod_desc,EXTRACT(Year FROM Tr.Fill_Date),EXTRACT(Quarter FROM Tr.Fill_Date)

您还可以使用以下命令消除case语句:

代码语言:javascript
复制
to_string(
 ((EXTRACT(Quarter FROM Tr.Fill_Date)-1)*3)+1) 
|| '-01-' 
|| EXTRACT(Year FROM Tr.Fill_Date)
票数 2
EN

Stack Overflow用户

发布于 2018-07-31 01:35:23

您不能像在ORDER BY中那样使用列别名进行GROUP BY

或者在group by子句中重复Sales_Quarter的整个表达式,或者在WITH子句中计算它,然后选择它并按它分组。我将在下面演示这一方法:

代码语言:javascript
复制
with c_prod as (select prod_id_pri, prod_desc,prod_num from rm_mrb.V_PRODUCT_PROD_LIST),
extracted as (
select 'Excluded' as Status, tr.product_id, prod.prod_desc,
 tr.QUANTITY,  total_prescriptions
,CASE 
            When 
                EXTRACT(MONTH FROM Tr.Fill_Date) IN ( 
                    '1', 
                    '2', 
                    '3' )
                THEN
                    '01-01-'||EXTRACT(Year FROM Tr.Fill_Date)
            When 
                EXTRACT(MONTH FROM Tr.Fill_Date) IN ( 
                    '4', 
                    '5', 
                    '6' )
                THEN
                    '04-01-'||EXTRACT(Year FROM Tr.Fill_Date)
            When 
                EXTRACT(MONTH FROM Tr.Fill_Date) IN ( 
                    '7', 
                    '8', 
                    '9' )
                THEN
                    '07-01-' ||EXTRACT(Year FROM Tr.Fill_Date)
            ELSE '10-01-'||EXTRACT(Year FROM Tr.Fill_Date)
    End As Sales_Quarter
  from VALIUSER.ivd_transaction_record_details RD, valiuser.IVD_TRANSACTION_RECORDS TR
  left join c_prod prod on (tr.product_id=prod.prod_id_pri)
  where TR.transaction_record_id=RD.transaction_record_id
  and status='1'
  and tr.File_id in (1765)
)
SELECT 'Excluded' as Status, product_id, prod_desc, sales_quarter,
 sum(QUANTITY) QUANTITY,  sum(total_Prescriptions) Total_#_OF_PRESCRIPTIONS, count(*) Claims
 from extracted
  group by Status,Product_id,prod.prod_desc,Sales_Quarter
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51599260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档