首页 > 解决方案 > 不同的 2 个不同的列,如何在每一行中打印总组合

问题描述

有了这个查询,

SELECT DISTINCT ID, DATE FROM MAIN_TAB ORDER BY ID ASC

如何ID在每行的前面打印字段的不同组合的总数,例如TOTAL_DISTINCT_VALUES

ID    DATE       TOTAL_DISTINCT_VALUES
37870 02/07/2018                     3
37870 03/07/2018                     3
37870 04/07/2018                     3
55887 04/07/2018                     2
55887 03/07/2018                     2
61891 02/07/2018                     1
44891 02/07/2018                     1
75891 02/07/2018                     1

标签: mysql

解决方案


您可以使用 count 和 group by

SELECT ID, DATE, count(*) TOTAL_DISINCT_VALUE
FROM MAIN_TAB 
GROUP BY ID, DATE
ORDER BY ID ASC

但是看着你的数据样本,你似乎只需要 id 的 cont ,所以你可以使用 id 对计数组的连接

select t.id, a.date, t.TOTAL_DISTINCT_VALUE
from  MAIN_TAB a
inner JOIN (
    select id, count(*) TOTAL_DISTINCT_VALUE 
    FROM MAIN_TAB 
    group by ID 
) t on a.id = t.id 

或按照 barmar 的建议。计数(不同的日期)

select t.id, a.date, t.TOTAL_DISTINCT_VALUE
from  MAIN_TAB a
inner JOIN (
    select id, count(distinct date) TOTAL_DISTINCT_VALUE 
    FROM MAIN_TAB 
    group by ID 
) t on a.id = t.id 

推荐阅读