tsql - 单行项目计数问题
问题描述
我需要根据 GroupID = 260 和 ItemID 为 1302、1303、1305、1306 时的每个 DailyFieldRecordID 找到 ActivityID 和 AdditionalActivityID 的计数。我遇到的问题是,无论每个 DailyFieldRecordID 有多少行,无论有多少行符合约束,都只能有一个 ActivityID 和一个 AdditionalActivityID。假设某人正在填写表格,他们列出了他们当天的活动以及他们可能进行的其他活动。他们只能列出一项主要活动(ActivityID)和一项次要活动(AdditionalActivity)。但是在这些活动中,他们可以与多个组(GroupID)或人员(ItemID)一起参与。因此,当我运行此查询时,我能够根据约束分隔行,但我只想计算他们参加了多少活动,每个 DailyFieldRecordID 将是 1 或 2,无论涉及多少组或人员。现在,我的查询正在计算符合条件的每一行的每个 ActivityID 和 AdditionalActivityID,这可以为每个 DailyFieldRecordID 提供不止 1 或 2 个。我只是不确定我将如何去做。非常感谢任何反馈。
DailyFieldRecordID: GroupID: ItemID: ActivityID: AdittionalActivityID:
3369320 260 1302 37 0
3369320 260 1305 37 0
3369320 210 2222 37 0
3369320 250 2222 37 0
3372806 260 1302 56 56
3372806 260 1305 56 56
3372806 250 2222 56 56
3388888 260 2222 45 32
Expected Result:
DailyFieldRecordID: Count:
3369320 1
3372806 2
Current Result:
DailyFieldRecordID: Count:
3369320 2
3372806 4
'
select a.DailyFieldRecordID,
count(case when a.ActivityID <>0 then 1 else null end) +
count(case when a.AdditionalActivityID <>0 then 1 else null end) as count
from AB953 a
where a.GroupID= 260 and exists(
select b.DailyFieldRecordID
from AB953 b
where a.DailyFieldRecordID = b.DailyFieldRecordID and b.ItemID in (1302,1303,1305,1306))
group by DailyFieldRecordID
解决方案
尝试您的数据时,我得到了这个结果:
DailyfieldrecordID Count
3369320 3
3372806 2
3388888 1
SELECT DailyFieldRecordID,
COUNT(CASE WHEN ActivityID <>0 then 1 else 0 end +
CASE WHEN AdditionalActivityID <>0 then 1 else 0 end) as Count
from Foo
where GroupID= 260 and exists(
select b.DailyFieldRecordID
from fOO b
where DailyFieldRecordID = b.DailyFieldRecordID and b.ItemID in (1302,1303,1305,1306))
group by DailyFieldRecordID
新查询:您可能需要摆弄这个,不确定您的数据是否错误......不能让它选择 3 然后选择 2:
SELECT DailyFieldRecordID,
COUNT(CASE WHEN ActivityID <>0 then 1 else 0 end +
CASE WHEN AdditionalActivityID <>0 then 1 else 0 end) as Count
from Foo
where GroupID= 260 and DailyFieldRecordID IN(
select b.DailyFieldRecordID
from fOO b
where b.ItemID IN(1302,1303,1305,1306))
group by DailyFieldRecordID
推荐阅读
- python - 如果无法获取标准输出文件描述符,如何在 Python 脚本中抑制 C++ 打印?
- c++ - 随机性和多处理
- mysql - 使用 SELECT 查询将别名与 JSON_EXTRACT 结合使用
- javascript - Angular 中的异步电子邮件验证
- angularjs - AngularJS无法显示上传文件日志
- javascript - Babel-Standalone 错误:内联 Babel 脚本:当前未启用对实验性语法“decorators-legacy”的支持 (14:1):
- elasticsearch - 弹性搜索,对象数组的布尔查询
- flask - 无法在 gunicorn wsgi 服务器上运行烧瓶应用程序
- flutter - 应用程序在真机和模拟器上正常运行,但在生成 apk 时不工作
- android - dagger模块类的provider函数注解