![]() |
|
Archives of the TeradataForumMessage Posted: Wed, 20 Feb 2008 @ 16:55:14 GMT
<-- Anonymously Posted: Wed, 20 Feb 2008 11:15 --> The first query breaks with an error message of 3637. Some examples of similar queries that perform correctly are attached. (IMHO, the rewrites seem trivial; why do they make a difference.) Any thoughts why the first version breaks? Maybe the question should be: why do versions 2 and 3 execute correctly? Thank-you in advance for your thoughts on this matter.
database db2345;
/** fails with 3637 ***/
select
'Oct 2002 - Sep 2003',
0,
srvcctgryinf.m_svc_cat_cd_desc,
sum(f.chg_allow_amt),
sum(f.mdst_qty_svcs_cnt),
count(distinct f.person_prov_date)
from svc_cat as srvcctgryinf,
epi_prof_clm as f,
clm_general as claimgeneral
where claimgeneral.mdst_claim_type_cd = 1
and f.claim_general_key = claimgeneral.claim_general_key
and f.svc_cat_key = srvcctgryinf.svc_cat_key
and f.period_inc_key between 8310 and 8674
group by 1
, srvcctgryinf.m_svc_cat_cd_desc
, srvcctgryinf.m_svc_cat_cd_desc
order by 1 asc, 3 asc ;
/****
Results in error #3637:
3637 Invalid ORDER BY constant.
Explanation: An ORDER BY constant does not represent
the position of a selected expression, or the selected
expression represented is itself a constant.
Generated By: RES and OPT modules.
For Whom: End User.
Remedy: Change ORDER BY phrase.
The statements below succeed, producing the same answerset:
(approach: alias the constant)
****/
/** queries below succeed ***/
select 'Oct 2002 - Sep 2003' as rolling_qtr, 0,
srvcctgryinf.m_svc_cat_cd_desc,
sum(f.chg_allow_amt),
sum(f.mdst_qty_svcs_cnt),
count(distinct f.person_prov_date)
from svc_cat as srvcctgryinf,
epi_prof_clm as f,
clm_general as claimgeneral
where claimgeneral.mdst_claim_type_cd = 1
and f.claim_general_key = claimgeneral.claim_general_key
and f.svc_cat_key = srvcctgryinf.svc_cat_key
and f.period_inc_key between 8310 and 8674
group by 1
, srvcctgryinf.m_svc_cat_cd_desc
, srvcctgryinf.m_svc_cat_cd_desc
order by 1 asc, 3 asc ;
/***
(approach: remove the constant from the ORDER BY clause)
***/
select 'Oct 2002 - Sep 2003', 0,
srvcctgryinf.m_svc_cat_cd_desc,
sum(f.chg_allow_amt),
sum(f.mdst_qty_svcs_cnt),
count(distinct f.person_prov_date)
from svc_cat as srvcctgryinf,
epi_prof_clm as f,
clm_general as claimgeneral
where claimgeneral.mdst_claim_type_cd = 1
and f.claim_general_key = claimgeneral.claim_general_key
and f.svc_cat_key = srvcctgryinf.svc_cat_key
and f.period_inc_key between 8310 and 8674
group by 1
, srvcctgryinf.m_svc_cat_cd_desc
, srvcctgryinf.m_svc_cat_cd_desc
order by 3 asc ;
Thanks
| ||||||||||||||||||||||||||||||||||||||||||||||||
| | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
| Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||