我正在使用 SSMS 2008,并尝试选择参与两个不同事件的消费者计数。这可能是一个简单的查询,但它目前没有返回预期的计数。这是我的 T-SQL 代码,它更好地解释了我的尝试:
select [Program Quarter], event_name, consumer
from #consumer_initiations
where [Program Quarter] = 1 --and consumer = 'Byrd, Victoria Lynn'
group by [Program Quarter], event_name, consumer
having count (distinct event_name) > 1
所以上面的查询返回 0 条记录。如果我运行以下查询,我会得到所有记录:
select [Program Quarter], event_name, consumer
from #consumer_initiations
where [Program Quarter] = 1
因此,我可以看到其中一些记录的位置,其中存在同一季度、同一个人,但该人有 2 个或更多事件。现在,我如何计算同一个人参与 2 个或更多事件的次数?
最佳答案
注意:很快就想到了,所以我确信这可以优化:
分解问题。
- 查找在相关季度举办了多项事件的人员
- 获取上述子查询中找到的每个消费者的计划季度、事件名称和消费者
接下来,子查询类似于
SELECT DISTINCT Consumer
FROM #consumer_initiations
WHERE Count(event_name) > 1
完整的查询如下:
SELECT [Program Quarter], event_name, consumer
FROM #consumer_initiations
WHERE consumer IN (SELECT DISTINCT Consumer
FROM #consumer_initiations
WHERE Count(event_name) > 1)
然后我会考虑如何在没有子查询的情况下优化它。
关于tsql 不同的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7576160/