簡體   English   中英

使用特定條件從VIEW SQL的三表中進行JOIN和SUM

[英]JOIN and SUM from Three Table on VIEW SQL with specific criteria

我被卡在mysql上創建視圖。 我有3張桌子:

價格表

+----------+-----------+
| id_price | price_name|
+----------+-----------+
| 11       | retail    |
| 12       | agen      |
| 13       | subagen   | 
| 14       | distro    | 
+----------+-----------+

基本價格

+------------+-------------+
| id_product | basic_price |
+------------+-------------+
| 1001       | 1000        |
| 1002       | 2000        |
| 1003       | 3000        |
| 1004       | 4000        |
+------------+-------------+

保證金價格

+----------+------------+-------------+
| id_price | id_product | margin_price|
+----------+------------+-------------+
| 11       | 1001       | 100         |
| 12       | 1001       | 200         |
| 13       | 1001       | 300         |
| 14       | 1001       | 400         |
| 11       | 1002       | 200         |
| 12       | 1002       | 300         |
| 13       | 1002       | 400         |
| 14       | 1002       | 500         |
| 11       | 1003       | 300         | 
| 12       | 1003       | 400         |
| 13       | 1003       | 500         |
| 14       | 1003       | 600         |
| 11       | 1004       | 400         | 
| 12       | 1004       | 500         |
| 13       | 1004       | 600         |
| 14       | 1004       | 700         |
+----------+------------+-------------+

現在,我想對margin_price列的basic_price列進行查看和求和,如下所示:

+----------+-----------+------------+----------+-------------+------------+
|id_product|basic_price|retail_price|agen_price|subagen_price|distro_price|
+----------+-----------+------------+----------+-------------+------------+
| 1001     | 1000      | 1100       | 1200     | 1300        | 1400       |
| 1002     | 2000      | 2200       | 2300     | 2400        | 2500       |
| 1003     | 3000      | 3300       | 3400     | 3500        | 3600       |
| 1004     | 4000      | 4400       | 4500     | 4600        | 4700       |
+----------+-----------+------------+----------+-------------+------------+

我該怎么辦,您能為這個問題提供代碼解決方案嗎?

select
  bp.id_product,
  bp.basic_price,
  SUM(CASE
      WHEN pl.price_name='retail' THEN mp.margin_price ELSE 0 
      END) as retail_price
  SUM(CASE
      WHEN pl.price_name='agen' THEN mp.margin_price ELSE 0 
      END) as agen_price,
  SUM(CASE
      WHEN pl.price_name='subagen' THEN mp.margin_price ELSE 0 
      END) as subagen_price,
  SUM(CASE
      WHEN pl.price_name='distro' THEN mp.margin_price ELSE 0 
      END) as distro_price
from basic_price bp
   join margin_price mp on bp.id_product=mp.id_product
   join price_list pl on mp.id_price =pl.id_price 
GROUP by bp.id_product
  SELECT 
    A.id_product, 
    A.basic_price, 
    SUM(CASE WHEN C.id_price = 11 THEN A.basic_price + B.margin_price ELSE 0 END) AS retail_price,
    SUM(CASE WHEN C.id_price = 12 THEN A.basic_price + B.margin_price ELSE 0 END) AS agen_price,
    SUM(CASE WHEN C.id_price = 13 THEN A.basic_price + B.margin_price ELSE 0 END) AS subagen_price,
    SUM(CASE WHEN C.id_price = 14 THEN A.basic_price + B.margin_price ELSE 0 END) AS distro_price
  FROM basic_price A 
    JOIN margin_price B ON A.id_product = B.id_product 
    JOIN price_list C ON C.id_price = B.id_price
  GROUP BY A.id_product, A.basic_price

暫無
暫無

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

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