【发布时间】:2012-05-10 23:57:39
【问题描述】:
我有一个报告表,其中包含 Case(唯一编号)、ISR(个人安全报告 - 唯一编号)和 YearsOld 字段。
每个案例可以有多个 ISR。我想计算年龄组内的唯一案例数。
这个 SQL 给了我 ISR 的数量:
SELECT
COUNT(CASE WHEN `YearsOld` = -2) THEN 1 END) `No Report`,
COUNT(CASE WHEN `YearsOld` BETWEEN 0 AND 5) THEN 1 END) `0 to 5`
COUNT(CASE WHEN `YearsOld` BETWEEN 6 AND 12) THEN 1 END) `6 to 12`
FROM `Demographics`
有没有办法修改它以计算这些年龄组的 DISTINCT Cases?
【问题讨论】:
-
总是有可能的,但如果一个病例跨越一个 5-6 岁的人怎么办。您希望计数在案例开始的范围内,还是在此人通过最近活动关联的案例范围内。
-
Case可以为不同的ISR设置不同的YearsOld年龄吗? -
是的。 ISR 是关于药物不良反应的个人安全报告。对于特定事件(由两名或多名报告人提交),可以有多个 ISR,并且对于在不同日期发生在他/她身上的同一不良事件案例,可以有多个 ISR。理想情况下,Case+DateOfEvent+YearsOld 将用于计算在给定年龄的情况下发生的不良事件的确切数量,但报告中经常省略事件日期,因此 Case+YearsOld 尽可能接近计算独特的案例+不良事件。您的以下解决方案效果很好。
标签: mysql select if-statement case