SQL - 根据两列计算不同的记录

时间:2017-06-09 14:56:25

标签: mysql sql

我知道必须有一个简单的方法来做到这一点,但我画了一个空白。我正在看三个领域; CustomerID,Code,CodeDate

当代码进入客户ID时,它会获得代码日期。我在日期范围内按客户ID查找代码计数,但具有不同的日期。

ID     Date       Code
ABC    1/2/17     XYZ
ABC    1/3/17     XYZ
ABC    1/4/17     XYZ
ABC    1/4/17     XYZ
ABC    1/5/17     XYZ

在这种情况下有5条记录,但我想要显示最终结果

ID      CodeCount
ABC     4

由于1/4重复。

非常感谢所有帮助!

2 个答案:

答案 0 :(得分:1)

试试这个

SELECT Id AS [Type],
       COUNT(DISTINCT date) AS Count
FROM table
GROUP BY Id

答案 1 :(得分:0)

您需要在count(distinct)中的Date列上使用Trunc()来将两个日期视为相同。请查看此查询的输出。

      SELECT dt "Date" ,
         COUNT( DISTINCT dt2 ) OVER () c_dtime ,
         COUNT( DISTINCT TRUNC(dt2) ) OVER () c_date FROM
         ( SELECT TO_CHAR(SYSDATE, 'MM/DD/YYYY HH24:MI:SS' ) dt , SYSDATE dt2 FROM DUAL
      UNION ALL
         SELECT TO_CHAR(SYSDATE + 0.04, 'MM/DD/YYYY HH24:MI:SS' ) dt ,
           SYSDATE + 0.04 dt2
      FROM DUAL
         ) ;
-------------------------------------------
      Date,         C_Dtime, C_Date
06/09/2017 22:47:54 2        1
06/09/2017 21:50:18 2        1