Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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_Filter_Max - Fatal编程技术网

SQL查询中的多个过滤器

SQL查询中的多个过滤器,sql,sql-server,filter,max,Sql,Sql Server,Filter,Max,我已经阅读了很多关于过滤SQL查询的主题,但是没有一个适合我的情况,所以我需要一些帮助。我在SQL表中有以下数据 Date item quantity moved quantity in stock sequence 13-03-2012 16:51:00 xpto 2 2 1 13-03-2012 16:51:00 xpto -2

我已经阅读了很多关于过滤SQL查询的主题,但是没有一个适合我的情况,所以我需要一些帮助。我在SQL表中有以下数据

Date                    item     quantity moved   quantity in stock sequence

13-03-2012 16:51:00    xpto         2                      2           1 
13-03-2012 16:51:00    xpto        -2                      0           2
21-03-2012 15:31:21    zyx          4                      6           1
21-03-2012 16:20:11    zyx          6                      12          2
22-03-2012 12:51:12    zyx         -3                      9           1
这是在仓库中移动的数量,问题出在前两行,这两行是同时接收和返回的,因为我试图进行一个查询,给出给定时间内所有项目的库存。我使用maxdate,但在结果中没有得到正确的数量。

添加where子句并进行求和:

SELECT  item, qty_in_stock
FROM    (
        SELECT  *,
                ROW_NUMBER() OVER (PARTITION BY item ORDER BY item_date DESC, sequence DESC) rn
        FROM    mytable
        WHERE   item_date <= @date_of_stock
        ) q
WHERE   rn = 1
select item, sum([quantity moved])
from t
group by item
where t.date <= @DESIREDDATETIME
如果您为所需的日期时间输入了日期,请记住,当一天开始时,它会一直持续到午夜。

添加where子句并进行求和:

select item, sum([quantity moved])
from t
group by item
where t.date <= @DESIREDDATETIME

如果您为所需的日期时间输入了日期,请记住这一天开始时是午夜。

如果您使用的是SQL Server 2012,则添加了以下几个不错的功能

您可以将-或FIRST_VALUE-函数与行或范围窗口框架结合使用,请参见以下子句:


如果您使用的是SQL Server 2012,则添加了以下几个不错的功能

您可以将-或FIRST_VALUE-函数与行或范围窗口框架结合使用,请参见以下子句:


你在使用什么RDBMS?听起来你想移动SUMquantity来获得你当时拥有的总量?这是一个非常糟糕的设计。如果您可以更改模式,我建议您跟踪每个项目的移动,然后您可以查询有多少已移动以及有多少库存。嗯,它有点复杂,我不能使用sum,因为程序有另一种控制数量信号的方法,它可以是正的,但仍然会减少数量。SQL-Server,哪个版本?2005年、2008年、2008年、2012年?你在使用什么RDBMS?听起来你想移动SUMquantity来获得你当时拥有的总量?这是一个非常糟糕的设计。如果您可以更改模式,我建议您跟踪每个项目的移动,然后您可以查询有多少已移动以及有多少库存。嗯,它有点复杂,我不能使用sum,因为程序有另一种控制数量信号的方法,它可以是正的,但仍然会减少数量。SQL-Server,哪个版本?200520082008R2,2012?WHERE item_date@Dinarte:查询所有项目在给定时间的库存@股票的日期是参数,给定时间+1。这是正确的答案。当我回答时,我没有注意到库存量。你是个天才,它奏效了!!!真的,非常感谢你!!我现在必须研究这个查询,了解它是如何工作的,我不熟悉一些术语。WHERE item_date@Dinarte:做一个查询,给我所有项目在给定时间的库存@股票的日期是参数,给定时间+1。这是正确的答案。当我回答时,我没有注意到库存量。你是个天才,它奏效了!!!真的,非常感谢你!!我现在必须研究这个查询,了解它是如何工作的,我不熟悉一些术语。