我有列值" DateThru"具有根据数据库更新日而更改的日期值。我有一些内部加入表,并且我试图得到一个列(Alloc)的总和直到" DateThru"日期。我尝试使用
限制表格 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
说&#34; DateThru&#34;是2017-10-05。 我想将Alloc从10-1加到10-5给出结果&#34; .122&#34;作为MTDAlloc。
这可以作为&#34; windows功能&#34;或者在哪里? 谢谢!
我使用sum over partition来获得总数
我有正确的工作和组织。我的问题是,现在每个&#34; r&#34;都有重复的条目。所以当我将ActiveDate&lt; = DateThru更改为&#34; =&#34;它修复了我的重复问题,但没有完全解决MTDAlloc问题。我确实使用了&#34; sum列&#34;创建另一个所以我不能使用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
最终结果将是每个独特的&#34; r&#34;在一排。
Month rep goal Alloc
----------------------
x r1 20 .122
x r2 20 .122
真的感谢您的帮助!
答案 0 :(得分:0)
您的问题可能只是单引号。根据您的描述,这应该有效:
where ActivityDate <= DateThru
单引号使值成为字符串。与日期的比较使SQL Server希望将其转换为日期。 'DateThru'
未被视为有效日期。
编辑:
我的猜测是,尽管它的名字,DateThru
实际上是一个字符串。您可以使用以下方法找到有问题的值:
select DateThru
from . . .
where try_convert(datetime, DateThru) is null;