2017-10-15 79 views
0

我有列值「DateThru」,其日期值根據數據庫更新日而變化。我有幾個表內部join'd,我試圖得到一個列(Alloc)的總和,直到「DateThru」日期。我試圖限制使用基於活動日期的列中的SQL總和行數

where ActivityDate <='DateThru' 

但是我收到服務器錯誤任何時候我嘗試在哪裏條款。

我從拉看起來像這樣

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 .
    x  2017-10-07 .0248 

說 「DateThru」 表是2017年10月5日。 我想要將Alloc從10-1加到10-5,從而給出「.122」的結果作爲MTDAlloc。

這可以做爲一個「Windows功能」或在哪裏條款?
謝謝!

我用求和分區獲得總

我總的工作和正確組織。我的問題是現在我有每個「r」重複的條目。所以當我將ActiveDate < = DateThru更改爲「=」時,它修復了我的重複問題,但不會累計MTDAlloc。我確實使用「總和列」來創建另一個列表,因此我無法使用rownumber()等級來刪除重複項。

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 

真的很感謝幫助!

+0

您能否顯示您的MTDAlloc列的預期結果? – Harry

+0

如果你想要的是一個Alloc的總和..那麼應該是像 從你的表組中按月份,代表選擇月份,代表,目標,總和(Alloc) 或我缺少別的東西嗎? – Harry

+0

我使用了分區總和!只是現在有一個重複的問題doe到<= where子句。 –

回答

0

您的問題可能只是單引號。從你所描述的,這應該工作:

where ActivityDate <= DateThru 

單引號使值爲字符串。與日期的比較使得SQL Server希望將其轉換爲日期。並且'DateThru'未被識別爲有效日期。

編輯:

我的猜測是,儘管它的名字,DateThru確實是一個字符串。您可以使用以下方式查找違規值:

select DateThru 
from . . . 
where try_convert(datetime, DateThru) is null; 
+0

我試過了,我仍然繼續得到externaldata_1錯誤。如果我設置ActivityDate ='2017-10-05'它只適用於該日期。 –

+0

@MattMcDermott。 。 。這表明'DateThru'是一個字符串表示 - 並不是所有的值都是有效日期。 –