SQL查询中的多个过滤器
我已经阅读了很多关于过滤SQL查询的主题,但是没有一个适合我的情况,所以我需要一些帮助。我在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
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。这是正确的答案。当我回答时,我没有注意到库存量。你是个天才,它奏效了!!!真的,非常感谢你!!我现在必须研究这个查询,了解它是如何工作的,我不熟悉一些术语。