我有日历日期,如何关闭每个日期?
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)
我的日历日期介于“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)