2015-10-15 44 views
1

这里我有一个表SQL SELECT查询错误

费用

与列

  • ID(PK)
  • TYPE_ID(FK)
  • 日期
  • vehicle_id(FK)

在我JTable中我想让它像这样enter image description here

我用这个SQL代码

SELECT vehicle_id,SUM(amount) FROM expenses GROUP BY type_id;

而且我得到了输出

enter image description here

但我希望它像以前的形象(长的一个)..我能做些什么呢?

注意

在这里,我用总和为得到多个值。 TYPE_ID用来表示各种费用键入比如柴油,机油,服务..

+0

怎么你的第二张照片成为SELECT语句只返回2列的输出? – Drew

+0

我不知道。当我做Navicat时,它也显示相同的输出。哪里不对了 ? – JLink

+0

由于它比Java或UI更多的SQL问题,我建议将'sql'标记添加到标记列表中。关于问题:你是否考虑在你的SQL查询中使用'left join's? – rsutormin

回答

1

可以使用有条件聚集做到这一点:

SELECT vehicle_id, 
     SUM(CASE WHEN type_id = 1 THEN amount ELSE 0 END) AS Diesel, 
     SUM(CASE WHEN type_id = 2 THEN amount ELSE 0 END) AS Insurance, 
     SUM(CASE WHEN type_id = 3 THEN amount ELSE 0 END) AS Tyre, 
     SUM(CASE WHEN type_id = 4 THEN amount ELSE 0 END) AS Battery, 
     SUM(CASE WHEN type_id = 5 THEN amount ELSE 0 END) AS Oil, 
     SUM(CASE WHEN type_id = 6 THEN amount ELSE 0 END) AS Garage 
FROM expenses 
GROUP BY vehicle_id; 

您需要GROUP BYvehicle_id。然后根据type_id执行条件SUM操作。这样,您可以通过vehicle_id获得type_id的部分款项。

Demo here

+0

非常感谢你..它工作得很好..我已经厌倦了这一点,因为5天..非常感谢你.. – JLink