2016-11-03 10 views
0

私が使用しているコードは、対応する日付とアカウントではなく、複数の日付の預金金額の合計を除いて素晴らしいです。たとえば、次のように合計の合計SQL Server 2014

アカウント番号:123 /日:2012年1月1日/保証金が必要:$ 100 /保証金:$ 100

アカウント番号:123 /日:2012年1月20日/保証金が必要:$ 100 /デポジット:$ 100

クエリ結果:

アカウント番号:123 /日:2012年1月1日/保証金が必要:$ 100 /保証金:$ 200

アカウント番号:123 /日:01/20/2012 /入金必須:$ 100 /入金:$ 200

同じ人のアカウントですが、2つの異なる日付です。デポジット金額は、アカウント番号&の日付に相当する金額のみを加算する必要があります。助けてくれてありがとう!以下は

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 

それが表にどのように見えるべきかですが、現在のクエリが10/10/16 & 10/20/16日付の両方のための$ 200のデポジットを返して:あなたの場合

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

私はそれをグループ化したかったのですが、複数の日に入金したときに入金金額が2倍になることはありませんでした。クエリは、デポジットを認識したに過ぎませんが、その日付ではなく、2倍の金額になります。 – Tosh

+0

@Toshレコードの1つに入金金額の値を設定しないでください。 – jelliaes

+0

いいえ、同じアカウントには2つの異なるデポジットの日付があります。クエリは、アカウントに対して行われたすべての預金を合計し、各日付の合計を合計します。私は特定の日付のために作られた預金のみの合計が必要です。上記の質問結果を参照してください。両方の日付の預金金額は$ 100でなければなりませんが、両方の日付で$ 200を返します。 – Tosh