我知道必须有一个简单的方法来做到这一点,但我正在画一个空白。我正在查看 3 个字段;客户 ID、代码、代码日期
当代码出现在客户 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 是重复的。
非常感谢所有帮助!
试试这个
SELECT Id AS [Type],
COUNT(DISTINCT date) AS Count
FROM table
GROUP BY Id
您需要在 count(distinct ( 中的日期列上使用 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