SQL Server 2008:如何获取以前的状态
我需要统计每个月当前状态为3而以前状态不是2的人。SQL如下所示:SQL Server 2008:如何获取以前的状态,sql,sql-server,Sql,Sql Server,我需要统计每个月当前状态为3而以前状态不是2的人。SQL如下所示: SELECT MONTH, COUNT(PERSON_ID) AS COUNT FROM STATUS S WHERE STATUS = 3 AND 'PREVIOUS_STATUS' <> 2 GROUP BY MONTH 如果月份以合理的格式存储,则可以使用外部应用: 如果月份以合理的格式存储,则可以使用外部应用: 月份字段是什么类型的?你为什么对我大喊大叫?我
SELECT
MONTH,
COUNT(PERSON_ID) AS COUNT
FROM
STATUS S
WHERE
STATUS = 3 AND 'PREVIOUS_STATUS' <> 2
GROUP BY
MONTH
如果月份以合理的格式存储,则可以使用外部应用:
如果月份以合理的格式存储,则可以使用外部应用:
月份字段是什么类型的?你为什么对我大喊大叫?我什么都没做!!11111!不,说真的,没什么害处,但是在普通文本中使用大写锁定有点不礼貌。@melpomene:stringHaha,祝你好运。月份字段是什么类型的?你为什么对我大喊大叫?我什么都没做!!11111!不,说真的,没什么害处,但是在普通文本中使用大写锁定是有点不礼貌的。@melpomene:stringHaha,祝你好运。谢谢你的快速回复!sql为我提供了所有月份的数据。如何获取特定时间段的数据,例如“2015年7月”至“2016年6月”?谢谢@冰您将在外部查询中添加where子句。感谢您的快速回复!sql为我提供了所有月份的数据。如何获取特定时间段的数据,例如“2015年7月”至“2016年6月”?谢谢@冰您将向外部查询添加where子句。
Person_ID Status Month
-------------------------------------------
101 1 07/15
101 2 09/15
101 3 12/15
102 1 02/15
102 3 05/15
103 1 03/16
... ... ...
select month, count(*)
from status s outer apply
(select top 1 s2.*
from status s2
where s.person_id = s2.person_id and s2.month < s.month
order by s2.month desc
) as sprev
where s.status = 3 and (sprev.status is null or sprev.status = 2)
group by month;