【问题标题】:SQL Select Query ErrorSQL 选择查询错误
【发布时间】:2016-01-14 05:39:57
【问题描述】:

这里有一张桌子

费用

有列

  • id (PK)
  • type_id (FK)
  • 金额
  • 日期
  • vehicle_id (FK)

在我的 jtable 中我想这样显示它

我用这个sql代码

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

我得到了输出

但我想要它像以前的图像(长的).. 我能做些什么呢?

注意

这里我使用 Sum 来获取多个 amount 值。type_id 用于表示各种费用类型,如柴油、石油、服务..

【问题讨论】:

  • 您的第二张图片是如何成为仅返回 2 列的选择语句的输出的?
  • 我不知道。当我执行 Navicat 时,它也显示相同的输出。有什么问题吗?
  • 因为它比 Java 或 UI 更多的是 SQL 问题,我建议将 sql 标签添加到标签列表中。关于问题:您是否考虑在 SQL 查询中使用left joins?
  • 没有。我对此一无所知..我们不能从 SELECT 查询中得到它吗..

标签: java mysql sql swing jtable


【解决方案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 BY vehicle_id。然后根据type_id 执行条件SUM 操作。通过这种方式,您可以根据vehicle_id 获得type_id 的部分金额。

Demo here

【讨论】:

  • 非常感谢..效果很好..我受够了 5 天以来..再次非常感谢..
猜你喜欢
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多