Sql 在子查询中使用count()与在子查询外部使用count()相比

Sql 在子查询中使用count()与在子查询外部使用count()相比,sql,count,teradata,teradata-sql-assistant,Sql,Count,Teradata,Teradata Sql Assistant,我试图学习在子查询内部和外部计算变量的意义。 问题1:在内部使用count(),得到错误的结果,但我不知道为什么: sel monthday_key, mfr_mdl_code, --svc_time_Zone_Code, cntc_rqst_subarea_desc, CALL_COUNT from ( sel monthday_key, --svc_time_Zone_Code, mfr_mdl_code, cntc_rqst_subarea_desc ,mfr_Ser_id

我试图学习在子查询内部和外部计算变量的意义。 问题1:在内部使用count(),得到错误的结果,但我不知道为什么:

sel
monthday_key,
 mfr_mdl_code,
--svc_time_Zone_Code,
cntc_rqst_subarea_desc, 
CALL_COUNT
from 
(
sel 
monthday_key,
--svc_time_Zone_Code,
mfr_mdl_code, 
 cntc_rqst_subarea_desc 
 ,mfr_Ser_id, 
 count(cntc_rqst_id) call_count
from cust_Acct_equip_fact A join monthday_dim b on monthday_key between bgn_monthday_key and end_monthday_key 
and equip_stat_code = 'ACTV' and monthday_key = current_Date-1
join equip_type_dim C on a.equip_type_key=c.equip_type_key and mfr_mdl_code like any ('C21)
join cntc_rqst_tech_fact D on a.cust_acct_key=cntc_key and cntc_Rqst_bgn_Date = monthday_key and cntc_rqst_bgn_date = current_Date-1
join cust_acct_dim E on a.cust_acct_key=e.cust_Acct_key
AND D.CNTC_RQST_SUBAREA_DESC in ('NO SS')
--and svc_time_Zone_Code in ('P','E','M','C')
group by 1,2,3,4
) T1 
group by 1,2,3,4
在子查询外部使用Count(),以获得正确的结果:

sel
monthday_key,
 mfr_mdl_code,
--svc_time_Zone_Code,
cntc_rqst_subarea_desc, 
count(cntc_Rqst_id) as CALL_COUNT
from 
(
sel 
monthday_key,
--svc_time_Zone_Code,
mfr_mdl_code, 
 cntc_rqst_subarea_desc 
 ,mfr_Ser_id, 
 cntc_rqst_id
from cust_Acct_equip_fact A join monthday_dim b on monthday_key between bgn_monthday_key and end_monthday_key 
and equip_stat_code = 'ACTV' and monthday_key = current_Date-1
join equip_type_dim C on a.equip_type_key=c.equip_type_key and mfr_mdl_code like any ('C21')
join cntc_rqst_tech_fact D on a.cust_acct_key=cntc_key and cntc_Rqst_bgn_Date = monthday_key and cntc_rqst_bgn_date = current_date-1
join cust_acct_dim E on a.cust_acct_key=e.cust_Acct_key
AND D.CNTC_RQST_SUBAREA_DESC in ('NO SS')
--and svc_time_Zone_Code in ('P','E','M','C')
group by 1,2,3,4,5
) T1 
group by 1,2,3

有多行具有相同的
monthday\u键、mfr\U mdl\U代码、cntc\U rqst\U子区域描述、mfr\U Ser\U id、cntc\U rqst\U id
组合,Q2应用距离并删除重复项。将Q1更改为
count(不同的cntc\u rqst\u id)
应该会返回相同的结果(当然,不需要子查询/派生表)。我昨天也计算出了这个结果。我得到错误结果的原因是,我在子查询中以“id”级别计数,而在外部,它只是对日期的适当聚合。但我感谢你的回答。