我有日历日期,如何关闭每个日期?

I have Calendar date, How can I bring closing in each date?

我的日历日期介于“2020-01-01”和“2020-01-03”之间。如何在不使用联合的情况下将数量总和带到每个日期,我尝试了以下查询:

SELECT 
    Date,
    Sum(ILE.Quantity)
FROM 
    Calender C 
LEFT JOIN 
    [XYZ$Item Ledger Entry] ILE 
ON 
    C.Date <= Cast(ILE.[Posting Date] as Date )
WHERE 
    Date BETWEEN '2020-01-01' AND '2020-01-03'
GROUP BY 
    Date;

我希望我的结果如下所示

Date           Qty
01-01-2020  24550318.91
01-02-2020  24321291.58
01-03-2020  24526795.94

Select Date from Calendar C Where Date Between '2020-01-01'And '2020-01-03'

Select '2020-01-01'[Qty Till],Sum(ILE.Quantity)From[XYZ$Item Ledger Entry]ILE Where [Posting Date] <= '2020-01-01'
Select '2020-01-03'[Qty Till],Sum(ILE.Quantity) From[XYZ$Item Ledger Entry]ILE Where [Posting Date] <= '2020-01-02'
Select '2020-01-03'[Qty Till],Sum(ILE.Quantity) From[XYZ$Item Ledger Entry]ILE Where [Posting Date] <= '2020-01-03'

您的查询应该有效,但我相信您的情况可能恰恰相反。以下将仅考虑 过去 那 3 天的条目:

C.Date <= Cast(ILE.[Posting Date] as Date)

如果你想要这些日期之前的记录,那么你需要切换它:

Cast(ILE.[Posting Date] as Date) <= C.Date

如果要加快查询速度,请在 [Posting Date] 列上创建索引:

CREATE NONCLUSTERED INDEX NCI_LedgerEntry_PostingDate ON [XYZ$Item Ledger Entry] ([Posting Date])

然后避免在比较中强制转换值(虽然引擎可能仍使用索引,但不确定):

ILE.[Posting Date] < DATEADD(DAY, 1, C.Date)