【发布时间】:2016-06-23 06:00:49
【问题描述】:
我还是 SQL 新手,所以我可能做错了,但是...
我需要对约会日期进行明确计数。所以 cust.id 1 的 John 应该有 3 个约会日期,而 Sara 应该有 cust.id 1 的 2 个约会日期。
临时表 (EC):
|cust.id | emp_name | emp_id | APPT_DATE | Procedure_Code | something1|
|:------:|:--------:|:------:|:--------------:|:--------------:|:---------:|
| 1 | john | 100 | 2/2 00:00:00 | a0 | w/e |
| 1 | john | 100 | 2/3 00:00:00 | b1 | w/e |
| 1 | john | 100 | 2/4 00:00:00 | c2 | w/e |
| 1 | Sara | 200 | 2/2 00:00:00 | d3 | w/e |
| 1 | Sara | 200 | 2/3 00:00:00 | e4 | w/e |
我正在寻找的答案:
| cust.id | emp_name | emp_id | CNT | APPT_DATE | Procedure_Code |
|:-------:|:--------:|:------:|:---:|:-------------:|:--------------:|
| 1 | john | 100 | 3 | 2/2 00:00:00 | a0101 |
| 1 | john | 100 | 3 | 2/3 00:00:00 | b1234 |
| 1 | john | 100 | 3 | 2/4 00:00:00 | c0101 |
| 1 | Sara | 200 | 2 | 2/2 00:00:00 | d0101 |
| 1 | Sara | 200 | 2 | 2/3 00:00:00 | e1234 |
我的代码:
SELECT cust_id
,emp_name
,emp_id
,COUNT(DISTINCT APPT_DATE)
OVER (PARTITION BY cust_id, APPT_DATE) AS CNT
,APPT_DATE
,Procedure_Code
FROM #EC
ORDER BY cust_id
【问题讨论】:
-
但是为什么你的 Procedure_Code 被改变了?
-
您希望按客户 ID 或员工 ID 明确计算应用日期?您的描述是“cust id”,但您的结果看起来像是“emp id”。编辑:看起来都像!正确吗?
-
@Loser 客户进来完成不同的事情。例如,如果你有一天去汽车修理店买新的刹车片,然后换油。希望这是有道理的
-
@Squirrel 是的,两者都是!抱歉没有具体说明
标签: sql-server greatest-n-per-group