Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取给定日期的状态的SQL查询_Sql_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

获取给定日期的状态的SQL查询

获取给定日期的状态的SQL查询,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我相信这个问题以前已经得到了回答,但是找不到 我有一个每几周改变状态的项目表。我想看看任意的一天,找出每个状态下有多少个项目 例如: tbl_项目历史记录 ItemID StatusChangeDate StatusID 样本数据: 1001, 1/1/2010, 1 1001, 4/5/2010, 2 1001, 6/15/2010, 4 1002, 4/1/2010, 1 1002, 6/1/2010, 3 ... 因此,我需要计算出在给定的一天中每个状态下有多少项。因此,在2010年5

我相信这个问题以前已经得到了回答,但是找不到

我有一个每几周改变状态的项目表。我想看看任意的一天,找出每个状态下有多少个项目

例如:

tbl_项目历史记录

ItemID
StatusChangeDate
StatusID
样本数据:

1001, 1/1/2010, 1
1001, 4/5/2010, 2
1001, 6/15/2010, 4
1002, 4/1/2010, 1
1002, 6/1/2010, 3
...
因此,我需要计算出在给定的一天中每个状态下有多少项。因此,在2010年5月1日,有一个项目(1001)处于状态2,一个项目处于状态1(1002)

由于这些项目的状态不会经常改变,也许我可以每天晚上创建一个缓存表,为一年中的每一个项目和每一天创建一行?我不知道这是不是最好的,也不知道怎么做


我将SQL Server 2008R2用于任意一天,您可以执行以下操作:

select ih.*
from (select ih.*,
             row_number() over (partition by itemId order by StatusChangeDate desc) as seqnum
      from tbl_ItemHistory ih
      where StatusChangeDate <= @YOURDATEGOESHERE
     ) ih
where seqnum = 1

? 您尝试了哪些不起作用的查询?我的第一个问题是方法:我是否需要将结果缓存到另一个表中?如果是,我该怎么做?我是SQLYou's right的新手Gordon,我错过了问题的那一部分。我会撤回我的答案以避免混淆…太好了。我得去研究配分函数。假设我确实想创建一个表,该表中的每一项和每一天都有一行。这将使我做一些报告更容易。我该怎么做?@user46372。你有机会问另一个问题。听起来不错。我把它放在这里:
select statusId, count(*)
from (select ih.*,
             row_number() over (partition by itemId order by StatusChangeDate desc) as seqnum
      from tbl_ItemHistory ih
      where StatusChangeDate <= @YOURDATEGOESHERE
     ) ih
where seqnum = 1
group by StatusId