Как соединить две колонки в одной таблице - PullRequest
0 голосов
/ 28 января 2020
SELECT CAST(`last_charged_date`  AS DATE) AS Date_time, COUNT(*) AS 

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)

Я хочу объединить last_charged_date и created_date в один столбец и должен отображать Charged_Count, Доход и Registered_Count в виде отдельных столбцов по дате

Ответы [ 3 ]

2 голосов
/ 28 января 2020

Вы можете использовать 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; 
1 голос
/ 28 января 2020

Попробуйте этот запрос,

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)

1 голос
/ 28 января 2020

использовать подзапрос и присоединиться, но в этом случае в любую дату меньше данных подзапроса будет меньше

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...