簡體   English   中英

SQL查詢聯接4個表並從2個不同的表中獲取2列的總和

[英]SQL query to join 4 Tables and get sum of 2 columns from 2 different tables

表1:采購報告

|id| VoucherNO| VoucherDate|
+--+----------+------------+
|1 |  0001    |  28/9/2017 |
|2 |  0010    |  27/9/2017 |

表2:詳細購買報告

|id | ITEMID | QTYpurchased | voucher
+---+--------+--------------+--------
|1  |   101  | 12           |   0001
|2  |   120  | 25           |   0001
|3  |   121  | 21           |   0014

表3:銷售報告

|id| VoucherNO| VoucherDate|
+--+----------+------------+
|1 |  0025    |  25/9/2017 |
|2 |  0058    |  23/9/2017 |

表4:明細出售

|id | ITEMID | QTYpurchased | voucher
+---+--------+--------------+--------
|1  |  101   |  8           |   0025
|2  |  120   |  5           |   0025
|3  |  121   | 10           |   0058

該查詢的目的是將所有4個表聯接起來以返回2列,即

  • 第1欄:商品名稱
  • 2:在給定日期之間具有相同項目ID的差額購買數量和出售數量給出了該特定日期的項目數量。

我試過的查詢如下

SELECT
  A.ITEMN, 
  A.ITEMNAME,
  SUM(CAST(C.QUANTITY AS numeric(18,2))) - SUM(CAST(A.QTY AS numeric(18,2))) as QTY 
FROM DETAILSALE A, SALESREPORT B, DETAILPURCHASES C, PURCHASEREPORT D 
WHERE A.BARCODE = B.VOUCHERNO 
  AND  C.BARCODE = D.VOUCHERNO 
  AND D.VOUCHERDATE=B.VOUCHERDATE
  AND D.VOUCHERDATE BETWEEN '" & DATE1.Text & "' AND '" & DATE2.Text & "'   
GROUP BY A.ITEMN,A.ITEMNAME 
ORDER BY A.ITEMN ASC

要求的輸出:

| ITEMID | QTY |
+--------+-----+
|  101   | 2   |
|  120   | 10  |
|  121   | 10  |

首先聚集,然后才加入。 我的描述中缺少產品表,表描述中的名稱與查詢不匹配,因此您可能需要在查詢中調整名稱:

select
  product.id,
  product.name,
  purchases.total,
  sales.total
from product
left join
(
  select itemid, sum(quantity) as total
  from detail_purchase
  where voucher in (select voucher from purchase where date between date '2017-09-01' 
                                                                and date '2017-09-05')
  group by itemid
) purchases on purchases.itemid = product.itemid
left join
(
  select itemid, sum(quantity) as total
  from detail_sale
  where voucher in (select voucher from sale where date between date '2017-09-01'
                                                            and date '2017-09-05')
  group by itemid
) sales on sales.itemid = product.itemid;

如果只想購買和/或出售產品,請將外部聯接更改為內部聯接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM