我在使用CASE WHEN参数时遇到了一些麻烦,可能更多的是与OVER功能有关,任何帮助都会非常感激。我得到的错误是'表达式在第2行字符51'之后的OVER之后无效。 我到目前为止的表达是
CASE
WHEN [Pay in 2015] = 1 and [Reimburse in 2016]= 1 OVER ([Customer ID]))>=2 then 2
ELSE 0
END
答案 0 :(得分:1)
尝试类似这样的事情......您可能需要使用与特定数据相交的内容。没有你的数据很难测试。
case
when
sum([Pay in 2015]) over (intersect([CustomerID],[Amount],[Date of Payment])) >= 2
and
sum([Reimburse in 2016]) over (intersect([CustomerID],[Amount],[Date of Payment])) >= 2
then 2
else 0
end
修改强>
在查看您的数据之后,我没有看到一种方法来执行此操作,而没有每次收费和报销的唯一标识符。例如,在您粘贴的数据中有4个费用。 2表示80表示,2表示-80表示这些会抵消。但是,如果相同的性质和目的有80的另一个怎么办?没有任何表达能够像任何两个指控那样两个学分,而忽略了最后一个。一般来说,您确实需要一个ItemID或指定收费和退款唯一标识符的东西。否则,有人可以用80美元或150美元来记入一个帐户,并且没有真正的方法可以告知哪些特定项目(什么是旅行凭证等)。
最好的想法就是你现在可以做的就是把顾客作为一个整体来看,并将他们收取的总金额与他们被记入的总金额相比较,但是如果没有保证准确,那么就不能保证每一行的协调一致。独特的chargeID / coucherID /等。
对不起。