0

您好我想问一下 sum 查询,我在执行查询时遇到了困惑。

我想计算总电流。

来料总和

select (select sum(jumlah) from  warehouse where tgl_invoice >= '2013-03-17' AND
tgl_invoice <='2013-03;18' and kode=a.kode) total,a.kode,a.nama from warehouse a 
group by a.kode;

结果 :


+--------+----------+------------+
| 总计| 科德 | 名 |
+--------+----------+------------+
| 4 | ACLG001 | AC LG 1 包 |
| 180 | P001 | 主轴 |
| 40 | S012 | 电缆 |
+--------+----------+------------+

SUM材料(货物)使用

select (select sum(jumlah) from use_material where tanggal >= '2013-03-17' AND 
tanggal <='2013-03;18' and kode_barang=a.kode)  total,a.kode,a.nama from warehouse a
group by a.kode;

结果 :


+--------+----------+------------+
| 总计| 科德 | 名 |
+--------+----------+------------+
| 空 | ACLG001 | AC LG 1 包 |
| 20 | P001 | 主轴 |
| 10 | S012 | 电缆 |
+--------+----------+------------+

现在我想对传入的材料(货物)减去材料(货物)的使用进行求和

  select 
  (select sum(jumlah) from  warehouse 
  where tgl_invoice >= '2013-03-17' AND tgl_invoice <='2013-03;18' and kode=a.kode) -
  (select sum(jumlah) from use_material 
  where tanggal >= '2013-03-17' AND tanggal <='2013-03;18' and kode_barang=a.kode)
  total,a.kode,a.nama from warehouse a group by a.kode;

结果 :


+--------+----------+------------+
| 总计| 科德 | 名 |
+--------+----------+------------+
| 空 | ACLG001 | AC LG 1 包 |
| 160 | P001 | 主轴 |
| 30 | S012 | 电缆 |
+--------+----------+------------+

这里是计算错误。AC LG 1 PK 是否必须为 4。但结果为 NULL

请回答。

4

2 回答 2

1

SQL COALESCE - 杀死空值应该有帮助。

例如 COALESCE(NULL,0) 将给出 0... 使用 NULL 进行操作通常不起作用。

我的意思是,您将产生空值的查询(您显示的第二个查询)包装在带有 0 的 COALESCE 中,以提供有效的减法语句。

干杯。

于 2013-03-30T05:32:41.853 回答
0

从仓库中选择 IFNULL(t.total,0,t.total), a.kode, a.nama a
left join (select kode_barang kode_barang,sum(jumlah) as total from use_material
where tanggal >= '2013-03-17' AND tanggal <='2013-03-18'
group by kode_barang) as t on t.kode_barang=a.kode
group by a.kode;

于 2013-03-30T09:02:57.873 回答