我有2张桌子;当我使用group
尝试join
时,输出不符合预期。
以下是表格:
以下是代码:
SELECT *, SUM(total_jual) AS totaljual, SUM(total_beli) AS totalbeli
FROM penjualan
JOIN pembelian ON penjualan.tgl_penjualan = pembelian.tgl_pembelian
GROUP BY penjualan.tgl_penjualan
我想要这个输出:**2017-08-16** **4404000** **18051000**
怎么做到这一点?
答案 0 :(得分:1)
加入时,每个排列都会得到一行,即连接条件匹配的每个组合的一行。这会导致示例中的四行重复每个值。尝试没有GROUP BY的选择,你会看到。为了获得正确的总和,您需要通过第二个表中的聚合结果加入:
SELECT penjualan.tgl_penjualan,
SUM(total_jual) AS totaljual,
max(b.total_beli) AS totalbeli
FROM penjualan
JOIN (SELECT tgl_pembelian, sum(total_beli) AS total_beli FROM pembelian
GROUP BY tgl_pembelian) AS b
ON penjualan.tgl_penjualan = b.tgl_pembelian
GROUP BY penjualan.tgl_penjualan;
任何语法错误的应用。我还没有测试过sql。
答案 1 :(得分:0)
您可以尝试以下查询:
SELECT penjualan.tgl_penjualan, SUM(total_jual) AS totaljual, SUM(total_beli) AS totalbeli
FROM penjualan JOIN pembelian ON penjualan.tgl_penjualan = pembelian.tgl_pembelian
GROUP BY penjualan.tgl_penjualan;
答案 2 :(得分:0)
试试这个
SELECT top 1 penjualan.tgl_penjualan,SUM(total_jual) AS totaljual,b.total_beli AS totalbeli
FROM penjualan
INNER JOIN (SELECT tgl_pembelian, sum(total_beli) AS total_beli
FROM pembelianGROUP BY tgl_pembelian) AS b
ON penjualan.tgl_penjualan = b.tgl_pembelian
GROUP BY penjualan.tgl_penjualan,b.total_beli;