Sql 如何获得每个月末的库存余额

Sql 如何获得每个月末的库存余额,sql,sql-server,Sql,Sql Server,我有四个专栏,比如 Date Customer InvoiceNo StockBalance 11/29/2017 A IN000414 5000 11/30/2017 B IN000415 4000 12/27/2017 A IN000416 3

我有四个专栏,比如

Date            Customer        InvoiceNo            StockBalance
11/29/2017       A               IN000414             5000
11/30/2017       B               IN000415             4000 
12/27/2017       A               IN000416             3500
12/30/2017       B               IN000417             2000
我想得到每个月底的库存余额,我需要的是产量

11/30/2017       B               IN000415             4000 
12/30/2017       B               IN000417             2000
我怎样才能得到这个?有人能给我指点吗?

你可以使用行数功能:

select t.*
from (select *, row_number() over (partition by year(date), month(date) order by date desc) seq
      from table
     ) t
where seq = 1;
编辑:您要应用:

使用行号,但请确保在计算中包含年和月:

select t.*
from (select t.*,
             row_number() over (partition by year(date), month(date)
                                order by date desc
                               ) as seqnum
      from t
     ) t
where seqnum = 1;

请显示您已经尝试过的内容。标记DBMS,即MySQL、SQL Server等。。。您正在使用的。基于什么标准??Hi-Sqlserver正在使用,并且criteria在日期列中是每个月的月末。我尝试过,但仅获得月末日期选择不同的日期添加,-1,DATEADDmm,DATEDIFFm,0,日期+1,0作为ChandraLog.dbo.Log中的日期,但如何获取每个月末的库存余额我执行了您的查询,但没有得到正确的答案。创建表tst1 Dat date TIME、Customer varchar55、InvoiceNo float、库存余额float;在tst1数据、客户、发票编号、库存余额值2017年11月29日“A”、4155000、2017年11月30日“B”、4164300、2017年11月30日“C”、4174000、2017年12月27日“A”、4183500、2017年12月30日“B”、4192000选择t.*从选择*,从tst1 t开始按月按顺序按数据描述顺序划分的行数,其中顺序=1;我需要2017年11月30日、2017年12月30日、2017年11月30日、2017年11月30日、2017年12月30日、2017年12月30日、2017年11月30日、2017年11月30日、2017年12月30日、2017年11月30日、2017年12月30日、2017年12月31日、2017年12
select t.*
from (select t.*,
             row_number() over (partition by year(date), month(date)
                                order by date desc
                               ) as seqnum
      from t
     ) t
where seqnum = 1;