Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle中提取值的分组_Oracle_Toad - Fatal编程技术网

Oracle中提取值的分组

Oracle中提取值的分组,oracle,toad,Oracle,Toad,我正在尝试对提取值进行分组。我通过提取案例来创建季度初。我正在尝试将此Sales\u Quarter添加到我的团购中。在oracle服务器上运行Toad时,我收到错误“Sales\u Quarter”无效标识符 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_de

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

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

您不能以
排序方式使用列别名对
分组

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

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

您不能以
排序方式使用列别名对
分组

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

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

您可以按年度和季度分组

group by Status,Product_id,prod.prod_desc,EXTRACT(Year FROM Tr.Fill_Date),EXTRACT(Quarter FROM Tr.Fill_Date)
您还可以通过以下方式消除案例陈述:

to_string(
 ((EXTRACT(Quarter FROM Tr.Fill_Date)-1)*3)+1) 
|| '-01-' 
|| EXTRACT(Year FROM Tr.Fill_Date)

您可以按年度和季度分组

group by Status,Product_id,prod.prod_desc,EXTRACT(Year FROM Tr.Fill_Date),EXTRACT(Quarter FROM Tr.Fill_Date)
您还可以通过以下方式消除案例陈述:

to_string(
 ((EXTRACT(Quarter FROM Tr.Fill_Date)-1)*3)+1) 
|| '-01-' 
|| EXTRACT(Year FROM Tr.Fill_Date)

再使用一个包装器选择并计算该选择中Sales\u Quarter的值,然后在组中使用多个包装器选择并计算该选择中Sales\u Quarter的值,然后在组中使用比我的答案更好的答案。比我的答案更好。“您不能按照ORDER BY的方式使用列别名进行分组。”--这实际上回答了发生错误的原因,以及在没有更改内置函数的使用那么简单的情况下如何解决错误。这两个答案都很好:)“您不能按照ORDER BY的方式使用列别名进行分组。“--这实际上回答了错误发生的原因,以及在没有改变内置函数的使用那么简单的情况下如何解决它。两个答案都很好:)