2016-11-02 1 views
0

pa.fdpayadjamount 테이블에는 몇 가지 카테고리가 있습니다 (예금, 지불 등). 내가 원하는 것은 모든 예금을 합산하고, 예금이없는 곳에서 amount는 자동으로 $ 0 또는 null을 입력합니다. 누군가 나를 도와주세요. 감사!

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] 
, Cast(Sum(pa.fdpayadjamount)/100.0 as decimal(10,2)) 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' AND pa.fdledgercodetype = 'Deposit' 
GROUP BY ca.fdorgunit, ca.fddos, iv.fdinnetdeposit, pt.fdmedrecnum 
+0

할 일을 지불 카테고리가있는 테이블이 있습니까? 그때 당신은 그 범주의 테이블에서 당신의 SELECT를 할 필요가있을 것이고, 지불과 나머지 쿼리로 LEFT JOIN을 할 것입니다. 카테고리가 비어 있으면 지불은 Null로 표시됩니다. –

+0

지불 범주를 정의하는 테이블이 있지만 쿼리에 쓰는 방법을 알아낼 수 없습니다. 나는 여전히 SQL을 처음 접하는 사람들이다. 위의 성명서에서 그것을 어디에 쓸 것인지, 무엇을 없애야 할 것인지 말해 줄 수 있습니까? – Tosh

답변

0

AS :

, Sum(Case When pa.fddescription = 'Deposit' Then Cast(pa.fdpayadjamount/100.0 as decimal(10,2)) Else 0 END) AS Deposit 
1

아마 다섯 번째 줄에 ISNULL() 함수를 추가하면됩니다.

, Cast(ISNULL(Sum(pa.fdpayadjamount),0)/100.0 as decimal(10,2)) AS Deposit 
+0

아마도 ISNULL을 내부로 옮기는 것이 더 나을 것입니다. 캐스트 (합계 (ISNULL (pa.fdpayadjamount, 0)/100.0 십진법 (10,2)) AS 예치 –

+0

@Chris - 결과에 널 (Null)이 반영되어 있지 않음 – Tosh

+0

@UV - ISNULL 내부 나에게 오류를 준 – Tosh

1

이 코드는 합계를 수행하는 위치에서 시도 할 수 있습니다.

ISNULL (캐스트 (합계 (pa.fdpayadjamount) /100.0 10 진수 (10,2)), 0)이 자신의 문제 해결 무엇 실제로 입금

+0

이 예금에 대한 null 결과를 아직 반환하지 않았습니다. 문제가있는 쿼리를 다른 곳에서 찾아야하는지 궁금합니다. – Tosh