[英]SQL Sum rows in column based on active date
我有列值“ DateThru”,其日期值根據數據庫更新日而改變。 我有一些表內部join'd,我正在嘗試獲取直到“ DateThru”日期為止的列(Alloc)的總和。 我嘗試使用限制表
where ActivityDate <='DateThru'
但是我每次在where子句中嘗試時都會收到服務器錯誤。
我從中拉出的桌子是這樣的
Month ActivityDate Alloc
---------------------------
x 2017-10-01 .0238
x 2017-10-02 .0302
x 2017-10-03 .0156
x 2017-10-04 .0200
x 2017-10-05 .0321
x 2017-10-06 .0123
x 2017-10-07 .0248
假設“ DateThru”是2017-10-05。 我想將分配給“ .122”的結果從10-1匯總到10-5,作為MTDAlloc。
可以將其作為“ Windows函數”或在where子句中完成嗎?
謝謝!
我用總和超過分區來獲得總數
我有總的工作和正確的組織。 我的問題是,現在我對每個“ r”都有重復的條目。 因此,當我將ActiveDate <= DateThru更改為僅“ =”時,它解決了我的重復問題,但未總計MTDAlloc。 我確實使用“求和列”來創建另一個,所以我不能使用rownumber()rank刪除重復項。
Month rep goal MTDAlloc
----------------------
x r1 20 .122
x r1 20 .122
x r1 20 .122
x r2 20 .122
x r2 20 .122
x r2 20 .122
最終結果將在一行中包含每個唯一的“ r”。
Month rep goal Alloc
----------------------
x r1 20 .122
x r2 20 .122
真的很感謝您的協助!
您的問題可能只是單引號。 根據您的描述,這應該有效:
where ActivityDate <= DateThru
單引號使值成為字符串。 與日期的比較使SQL Server希望將其轉換為日期。 並且'DateThru'
未被識別為有效日期。
編輯:
我的猜測是,盡管名稱如此, DateThru
確實是一個字符串。 您可以使用以下方法找到有問題的值:
select DateThru
from . . .
where try_convert(datetime, DateThru) is null;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.