2016-04-15 93 views
1
SELECT Sum((pvc.cpt_amount) * (pvc.unit)) AS billed_amount, 
      pvc.cpt_amount, 
      pvc.unit 
FROM  payment   AS pay 
LEFT JOIN patient_insurances AS pi 
ON  pay.who_paid = pi.id 
LEFT JOIN patient_visit_cpt AS pvc 
ON  ( 
        pay.encounter_id = pvc.id 
      AND  pay.claim_id = pvc.claim_id) 
LEFT JOIN patient_visit AS pv 
ON  pvc.visit_id = pv.id 
WHERE 
and  pi.insurance_id = 761 
AND  pay.created_at <= '2016-04-01 23:00:00' 
AND  pay.created_at >= '2016-03-31 00:00:00' 
GROUP BY pay.check_number, 
      pv.attending_provider_id 

一点儿也不工作单元= 1和cpt_amount = 145,但输出自带像 用4.像1 * 145 = 580 ..请任一项得到溶液萨姆为乘法

mulitplied
+0

显示我们的DB模式,样本数据和愿望输出。 \t请阅读[**如何提问**](http://stackoverflow.com/help/how-to-ask) \t \t这里是[** START **]( http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)了解如何提高您的问题质量并获得更好的答案。 –

+0

听起来像你的“GROUP BY”不正确或不够精确。您是否尝试过不使用“SUM”运行查询? – Technoh

+0

我的猜测是你的一个连接是与一对多相关的表。例如,如果每个'pay'有四个'pi',那么你将总结四份'pvc' – Uueerdo

回答

0

您的Group By可能是错误的。

同时删除关键字AND下面的查询WHERE条款

尝试后

SELECT Sum((pvc.cpt_amount) * (pvc.unit)) AS billed_amount, 
     pvc.cpt_amount,pvc.unit 
FROM payment AS pay 
LEFT JOIN patient_insurances AS pi ON pay.who_paid = pi.id 
LEFT JOIN patient_visit_cpt AS pvc ON(pay.encounter_id = pvc.id AND pay.claim_id = pvc.claim_id) 
LEFT JOIN patient_visit AS pv ON pvc.visit_id = pv.id 
WHERE pi.insurance_id = 761 AND pay.created_at <= '2016-04-01 23:00:00' 
     AND pay.created_at >= '2016-03-31 00:00:00' 
GROUP BY pvc.cpt_amount,pvc.unit 
+0

'SELECT Sum((pvc.cpt_amount)*(pvc.unit))'和'GROUP BY pvc.cpt_amount,pvc.unit'没有意义。 –

+0

我并不想为cpt.amount和unit获得分组。但一些循环或realtion可能是错误的 – vasanth252

+0

@PaulSpiegel是'SELECT总和((pvc.cpt_amount)*(pvc.unit))和GROUP BY pvc.cpt_amount,pvc.unit'不会造成sence,而是'SELECT pvc.cpt_amount ,pvc.unit和GROUP BY pvc.cpt_amount,pvc.unit'将使得搜索结果 –