首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何连接两个表?,它还包括月份。

如何连接两个表?,它还包括月份。
EN

Stack Overflow用户
提问于 2020-08-03 01:09:15
回答 1查看 32关注 0票数 0

当我加入前三个表(ACTIVATIONS,customer,agent_dtl)时,我试图在这里连接4个表,我得到了4000行计数,但是如果我试图加入第四个表(postpaid_summary),我将得到超过100 k行。为什么会这样呢?

我认为TO_CHAR月份的问题(a.packag_start_date,' month '),‘MONTH’(MONTH),如何与min(TIME_DAY_KEY)一起得到4000行?

代码语言:javascript
复制
SELECT
    a.act_actdevice,
    a.act_phone_no,
    a.bi_account_id,
    a.packag_start_date,
    TO_CHAR(TRUNC(a.packag_start_date, 'MONTH'), 'MON-YYYY') AS PACKAG_START_DATE_MONTHYEAR,
    a.retailer_name,
    a.retailer_type,
    a.dms_id as "DSR/BPR_ID",
    a.dsr_name as "DSR/BPR_NAME",
    a.agent_type,
    a.distributor_id,
    a.distributor_name,
    a.SALES_DISTRICT,
    a.profileid,
    s.district,
    s.province,
    c.identification_number,
    c.account_type,
    c.account_status,
    c.activation_date,
    c.permanent_disconnection_date,
    c.temporary_disconnection_date,
    c.status_change_date,
    c.credit_limit,
    c.average_monthly_bill_amount,
    c.primary_packag_start__date,
    c.package_code,
    c.sales_channel,
    c.site_id,
    c.district_name,
    c.usage_arpu,
    c.bill_to_contact_name,
    min(p.TIME_DAY_KEY) as first_consumption_date 
FROM
    ACTIVATIONS a 
    left JOIN customer c on TO_CHAR(a.act_phone_no) = c.msisdn_voice 
    left JOIN agent_dtl s ON a.dms_id = s.agent_id 
    JOIN postpaid_summary p on a.act_phone_no = p.MSISDN 
where
    a.packag_start_date BETWEEN TO_DATE('2020-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and TO_DATE('2020-05-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS') 
group by
    a.act_actdevice,
    a.act_phone_no,
    a.bi_account_id,
    a.packag_start_date,
    TO_CHAR(TRUNC(a.packag_start_date, 'MONTH'), 'MON-YYYY'),
    a.retailer_name,
    a.retailer_type,
    a.dms_id,
    a.dsr_name,
    a.agent_type,
    a.distributor_id,
    a.distributor_name,
    a.SALES_DISTRICT,
    a.profileid,
    s.district,
    s.province,
    c.identification_number,
    c.account_type,
    c.account_status,
    c.activation_date,
    c.permanent_disconnection_date,
    c.temporary_disconnection_date,
    c.status_change_date,
    c.credit_limit,
    c.average_monthly_bill_amount,
    c.primary_packag_start__date,
    c.package_code,
    c.sales_channel,
    c.site_id,
    c.district_name,
    c.usage_arpu,
    c.bill_to_contact_name,
    p.TIME_DAY_KEY
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-03 07:12:49

从GROUP BY子句中删除TIME_DAY_KEY应该可以解决这个问题。

关于聚合的要点是,必须按投影中的所有列分组,但我们要聚合的列除外。您在TIME_DAY_KEY上使用MIN()聚合函数,因此不将它包含在GROUP子句中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63222515

复制
相关文章

相似问题

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