重复SQL查询以返回每个日期的结果

时间:2016-02-11 12:51:00

标签: sql-server tsql

第一个问题,希望你可以帮助我,因为我似乎无法达到我想要的结果。我写了下面的代码

DECLARE @Date datetime = '20160102'
DECLARE @Part varchar(9) = '49ESNWH00'
DECLARE @Size Varchar(9) = '3050X2050'

;
With Parents as
(
   Select 
       par.StockTrans_Id, Par.PartNo, 
       par.TransactionDate, par.Size,
       Par.Quantity
   from 
       StockTrans as Par
   Where 
       Par.ParentYN = 'Y'
       And Par.TransactionDate <= @Date
       And Par.PartNo = @Part
)
Select 
    @Date as Date,
    par.PartNo, par.size,
    SUM(st.Quantity) [Quantity]
from 
    Parents as Par
left Join 
    StockTrans as st on Case
                          When st.RefNo < 10 then ('00'+ Convert(Varchar,st.refno)) + '.' + st.PartNo
                          When st.RefNo < 100 then ('0'+ Convert(Varchar,st.refno)) + '.' + st.PartNo
                          Else Convert(Varchar,st.refno) + '.' + st.PartNo
                        end = par.StockTrans_Id
Where 
    St.TransactionDate <= @date
    and par.Size = @Size
group by 
    Par.PartNo, par.Size
having 
    SUM(st.Quantity) > 0

这会返回以下数据:

Data output

此数据是正确的,如果您更改标量变量@Date中的日期,那么它很高兴地告诉您该日期的库存位置。

我需要做的是在一组日期内的日子里出现这个股票头寸。有效地生成如下所示的数据表(开始和结束日期也是变量):

Desired Output

如何按日期重复查询?

1 个答案:

答案 0 :(得分:0)

您可以简单地将日期范围存储在临时表中,并使用“And Par.TransactionDate”将该表连接起来。它应该很乐意为您提供“日期范围”

中所有日期的结果