【发布时间】:2020-01-08 01:50:33
【问题描述】:
我需要计算某个动作在活动的最后一天发生了多少次,即使这个动作多次发生在同一个对象上。例如: 一个人可以整天乘坐同一个滑雪缆车,但我需要知道他那天实际乘坐了多少次滑雪缆车。
到目前为止,我能够计算一个人在某个日期乘坐不同的滑雪缆车的次数。但是,如果我有一个人在同一天乘坐了 3 次相同的滑雪缆车,它只会算作 1。这是我的查询:
select SkipassNumber AS SkipassNumber, count(SkiLiftCode) AS TotSkiLiftLastDay
from actions_table
where ActionDate IN
(select IIF(count(ActionDate) > 1, max(ActionDate), ActionDate)
from actions_table
group by ActionDate)
group by SkipassNumber, ActionDate
样本数据:
SkipassNumber | SkiLiftCode | ActionDate
--------------|---------------|------------
001 | 111 | 12/31/2018
001 | 111 | 12/31/2018
001 | 111 | 12/31/2018
002 | 222 | 01/28/2019
002 | 333 | 01/28/2019
我希望从 001 得到一个 TotSkiLiftLastDay = 3
从 002 开始,TotSkiLiftLastDay = 2
但我现在得到的是 001 TotSkiLiftLastDay = 1(这是错误)
从 002 开始,TotSkiLiftLastDay = 2(这是正确)
【问题讨论】:
-
您能否发布一些示例数据,其中包含预期的输出?
-
您通常 GROUP BY 与您选择的列相同,但那些作为设置函数的参数的列除外。 IE。
group by SkipassNumber. -
以表格格式发布您的预期输出......还添加更多输入数据以更好地说明。
and from 002 as well.完成这一行是什么意思
标签: sql sql-server count duplicates