简体   繁体   English

如何连接同一个表中的两列

[英]How to Join two columns in same table

SELECT CAST(`last_charged_date`  AS DATE) AS Date_time, COUNT(*) AS 

Charged_Count, SUM( last_charge_amt ) AS Revenue FROM subscriber GROUP BY CAST( last_charged_date AS DATE) Charged_Count, SUM( last_charge_amt ) AS 来自subscriber收入 GROUP BY CAST( last_charged_date AS DATE)

SELECT CAST( created_date AS DATE) AS Date_time, COUNT(*) AS Registered_Count FROM subscriber GROUP BY CAST( created_date AS DATE) SELECT CAST( created_date AS DATE) AS Date_time, COUNT(*) AS Registered_Count FROM subscriber GROUP BY CAST( created_date AS DATE)

I want to join last_charged_date and created_date as one column and need show Charged_Count, Revenue, and Registered_Count as separate columns according to the date我想将last_charged_datecreated_date作为一列加入,并需要根据日期将 Charged_Count、Revenue 和 Registered_Count 显示为单独的列

You can use union all :您可以使用union all

select date, 
       sum ( col = 'last_charged' ) as Charged_Count,
       sum (case when col = 'last_charged' then Revenue else 0 end ) as Revenue,
       sum ( col = 'created_date' ) as Registered_Count
from (select CAST(s.`last_charged_date`  AS DATE) as date, 
             s.`last_charge_amt` as Revenue, 'last_charged' as col 
      from `subscriber` s union all
      select CAST(s1.`created_date`  AS DATE) as created_date, 
             0, 'created_date' as col 
      from `subscriber` s1
    ) t
group by date; 

use subquery and join but for this case in any date less in of the subquery data will be less使用子查询和连接,但对于这种情况,在任何日期中,子查询数据中的较少数据将较少

select a.*,b.* from ( SELECT CAST(`last_charged_date`  AS DATE) AS Date_time, COUNT(*) AS 
 Charged_Count, SUM(`last_charge_amt`) AS Revenue 
    FROM `subscriber` 
    GROUP BY CAST(`last_charged_date`  AS DATE)
) a join 
(
 SELECT CAST(`created_date` AS DATE) AS Date_time, COUNT(*) AS Registered_Count 
    FROM `subscriber` 
    GROUP BY CAST(`created_date` AS DATE)
) b on a.Date_time=b.Date_time

Try this query,试试这个查询,

SELECT CAST(`last_charged_date`  AS DATE) AS Date_time, COUNT(*) AS  Charged_Count, SUM(last_charge_amt) AS Revenue, ksolangi.Date_time, Date_time.Registered_Count
FROM subscriber 
LEFT OUTER JOIN ( SELECT CAST(created_date AS DATE) AS Date_time, COUNT(*) AS Registered_Count FROM subscriber GROUP BY CAST(created_date AS DATE) ) AS ksolangi ON ksolangi.Date_time = CAST(last_charged_date AS DATE)
GROUP BY CAST(last_charged_date AS DATE)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM