2016-11-03 115 views
0

我有很好的代码,除了它将多个日期的存款金额总和而不是相应的日期和帐户。例如:总结重复SQL Server 2014

帐号:123 /日期:01/01/2012 /存款准备:$ 100 /保证金:$ 100

帐号:123 /日期:2012年1月20日/存款准备:$ 100 /存款:$ 100

查询结果:

帐号:123 /日期:01/01/2012 /存款准备:$ 100 /保证金:$ 200

帐号:123 /日期:01/20/2012 /存款要求:$ 100 /存款:$ 200

这是同样的人帐户,但有两个不同的日期。存款金额只应与帐户#&日期对应的金额相加。谢谢你的帮助!

SELECT ca.fdorgunit AS Facility 
, pt.fdmedrecnum AS Account 
, ca.fddos AS DOS 
, Cast(iv.fdinnetdeposit/100.0 as decimal(10,2)) AS [Deposit Required] 
, Sum(Case When pa.fddescription = 'Deposit' Then Cast(pa.fdpayadjamount/100.0 as decimal(10,2)) Else 0 END) AS Deposit 
FROM OPENQUERY (VISION, 'SELECT * FROM de.tbinsverification') AS iv 
LEFT JOIN OPENQUERY (VISION, 'SELECT * FROM ci.tbcase') AS ca 
ON iv.fdcase = ca.id 
JOIN OPENQUERY (VISION, 'SELECT * FROM de.tbpatient') AS pt 
ON pt.id = ca.fdpatient 
LEFT JOIN OPENQUERY (VISION, 'SELECT * FROM ar.tbpayadjmaster') AS pa 
ON pa.fdpatient = pt.id 
WHERE iv.fdinnetdeposit is not Null AND iv.fdinnetdeposit <> '0' AND ca.fdcasestatus = 'Performed' 
GROUP BY ca.fdorgunit, ca.fddos, iv.fdinnetdeposit, pt.fdmedrecnum 

下面是怎样看的表,但目前的查询返回的$ 200这两个16年10月10日& 16年10月20日日期的存款:如果您

Facility | Account | DOS  | Deposit Required | Deposit 
1  | 1234 | 10/10/16 | $100   | $100 
1  | 1234 | 10/20/16 | $100   | $100 
+0

什么是'ca.fdoirunit''ca.fddos''iv.fdinnetdeposit'和'pt.fdmedrecnum'?因为你按这些字段进行分组,不仅是账号和日期。 – McNets

回答

1

想要得到需要存款的存款按月和年,在您的GROUP BY,试试这个。

GROUP BY ca.fdorgunit, MONTH(ca.fddos), YEAR(ca.fddos), iv.fdinnetdeposit, pt.fdmedrecnum 
+0

我希望它按原样分组,但是当该人在多个日期进行存款时,存款金额不会增加一倍。该查询只是确认存款,但不是该日期导致的双倍金额。 – Tosh

+0

@Tosh您是否意味着其中一个记录不应该有存款金额值? – jelliaes

+0

不,同一个帐户有两个不同的存款日期。该查询正在汇总为该账户所做的所有存款,并将每个日期的所有存款总和。我只需要为特定日期提供的存款。查看我上面发布的查询结果。这两个日期的存款金额应该只有100美元,但两个日期的回报是200美元。 – Tosh