Oracle中提取值的分组
我正在尝试对提取值进行分组。我通过提取案例来创建季度初。我正在尝试将此Sales\u Quarter添加到我的团购中。在oracle服务器上运行Toad时,我收到错误“Sales\u Quarter”无效标识符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
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的方式使用列别名进行分组。“--这实际上回答了错误发生的原因,以及在没有改变内置函数的使用那么简单的情况下如何解决它。两个答案都很好:)