如何统计所选年份年初至指定日期的唯一Active ID数量?
唯一活跃ID统计:DAX转SQL实现
数据库表结构
| ID | 日期 | 状态 |
|---|---|---|
| ID1 | 2022/01/01 | Active |
| ID1 | 2022/02/01 | Active |
| ID1 | 2022/03/01 | Active |
| ID1 | 2022/04/01 | Terminated |
| ID2 | 2022/01/01 | Active |
| ID2 | 2022/02/01 | Terminated |
需求说明
计算所选日期所在年份年初到该日期之间,状态为Active的唯一ID数量。
现有DAX实现
CountOfUnique = CALCULATE( DISTINCTCOUNT( 'Table'[ID] ) , 'Table'[STATUS] = "Active", DATESBETWEEN('CALENDAR'[DATE], STARTOFYEAR('CALENDAR'[DATE]), MAX('CALENDAR'[DATE]) ))
对应的SQL实现
动态日期(基于当前日期)
SELECT COUNT(DISTINCT ID) AS CountOfUnique FROM Table WHERE STATUS = 'Active' AND DATE BETWEEN DATE_TRUNC('year', CURRENT_DATE) AND CURRENT_DATE;
指定具体日期(如示例中的2022年4月1日)
SELECT COUNT(DISTINCT ID) AS CountOfUnique FROM Table WHERE STATUS = 'Active' AND DATE BETWEEN '2022-01-01' AND '2022-04-01';
不同数据库适配
- MySQL:将
DATE_TRUNC('year', CURRENT_DATE)替换为DATE_FORMAT(CURRENT_DATE, '%Y-01-01') - SQL Server:替换为
DATEFROMPARTS(YEAR(CURRENT_DATE), 1, 1) - Oracle:替换为
TRUNC(SYSDATE, 'YEAR')
内容的提问来源于stack exchange,提问作者lifeofthenoobie
相关产品推荐
相关产品推荐

