2015-11-03 40 views
1

我有一组数据,每天显示“子合同”使用的分钟数。我需要合计儿童合同消耗的分钟数,以便我们跟踪。总和分区依据,未给出预期结果

这是我使用的代码。

Select 
    "combined"."id", 
    "combined"."ContractCustomer", 
    "combined"."ContractCustomerChild", 
    "combined"."Minutes", 
    SUM("combined"."Minutes") OVER (PARTITION BY  "combined"."ContractCustomerChild" ORDER BY "combined"."id") As "CustomerMinutes", 
FROM "dbo"."combined" 

我希望对每个合约孩子重新启动总和,但是,似乎表现得那么好。

这是结果我得到:

ID CustomerContractChild Minutes CustomerMinutes 
     1 20150101+C1   1000  1000  
     2 20150101+C1   2000  3000 
     3 20150101+c2   2500  5500 

这是我所期待

ID CustomerContractChild Minutes CustomerMinutes 
     1 20150101+C1   1000  1000  
     2 20150101+C1   2000  3000 
     3 20150101+c2   2500  2500 

我做了什么错?

+0

您的期望看起来正确。你可以设置一个SQL小提琴吗?而且,你为什么使用双引号? –

+0

代码是在连接到服务器va JDBC的java客户端中编写的,这就是我有双引号的原因。 – AperurePro

+0

哦,我已经从这段代码中删除了最后一行。数据正在被返回,即不是语法错误。现在唯一的问题是结果集。我想知道如果它的JDBC给这个问题。 – AperurePro

回答

0

我已经运行这个,并得到确切的输出u需要。这与您的没有ContractCustomer列的情况相同(您不会在结果中显示它),代码中的ContractCustomerChild列在结果中显示CustomerContractChild并在FROM之前移除。

Select 
    "combined".ID, 
    "combined"."CustomerContractChild", 
    "combined"."Minutes", 
    SUM("combined"."Minutes") OVER (PARTITION BY  "combined"."CustomerContractChild" ORDER BY "combined"."id") As "CustomerMinutes" 
FROM "dbo"."combined" 
+0

感谢您抽出时间。是的,我的错误是我有一个ContractCustomer专栏。实质上,除了后缀+ C1,+ C2,+ C3之外,合约客户与客户合同相同。 – AperurePro

+0

没关系。然后你的查询对于所需的输出是正确的。你的问题解决了吗? – Esty

+0

对于复杂的运行总问题,这篇文章可能会有用。 [链接](http://stackoverflow.com/questions/11310877/calculate-running-total-running-balance) – Esty

0

谢谢你的回应。由于排序等原因,我的眼睛一定是在玩弄诡计。我回顾了结果,他们看起来正确。我现在就关闭它。如果他们发现错误,我会再抽取一些结果并做一些尝试。