【发布时间】:2017-03-17 15:18:45
【问题描述】:
我的代码效果很好,只是它汇总了多个日期的存款金额,而不仅仅是相应的日期和帐户。例如:
帐号:123 / 日期:01/01/2012 / 存款要求:100 美元 / 存款:100 美元
帐号:123 / 日期:2012 年 1 月 20 日 / 存款要求:100 美元 / 存款:100 美元
查询结果:
帐号:123 / 日期:2012 年 1 月 1 日 / 所需存款:100 美元 / 存款:200 美元
帐号:123 / 日期:2012 年 1 月 20 日 / 存款要求: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
下面是它在表格中的外观,但当前查询返回 2016 年 10 月 10 日和 2016 年 10 月 20 日日期的 200 美元押金:
Facility | Account | DOS | Deposit Required | Deposit
1 | 1234 | 10/10/16 | $100 | $100
1 | 1234 | 10/20/16 | $100 | $100
【问题讨论】:
-
什么是:
ca.fdoirunitca.fddosiv.fdinnetdeposit和pt.fdmedrecnum?因为您是按这些字段分组的,而不仅仅是帐户和日期。
标签: sql sql-server group-by sum duplicates