[英]SQL query get sum of sums
請幫我解決這個問題:我有疑問:
SELECT drugs_shipment.drug_id,
drugs_drug.name AS drug_name,
drugs_drugunit.name AS drug_unit,
drugs_shipment.initial_amount - SUM(IFNULL(drugs_movement.amount, "0")) OVER (PARTITION BY drugs_shipment.id) AS total_amount
FROM drugs_shipment
JOIN drugs_drug ON drugs_shipment.drug_id = drugs_drug.id
JOIN drugs_drugunit ON drugs_drug.unit_id = drugs_drugunit.id
LEFT JOIN drugs_movement ON (drugs_movement.shipment_id = drugs_shipment.id AND drugs_movement.DATE < "2025-12-11" )
WHERE drugs_shipment.date_of_comming < "2025-12-11"
AND (drugs_shipment.date_of_run_out IS NULL OR drugs_shipment.date_of_run_out > "2025-12-11")
接下來,我需要具有相同 drugs_shipment.drug_id 的字段中的 total_amount 之和 什么是錯的? 如何解決這個問題呢?
但這不起作用:
SELECT drugs_shipment.drug_id,
drugs_drug.name AS drug_name,
drugs_drugunit.name AS drug_unit,
SUM (drugs_shipment.initial_amount - SUM(IFNULL(drugs_movement.amount, "0")) OVER (PARTITION BY drugs_shipment.id)) AS total_amount
FROM drugs_shipment
JOIN drugs_drug ON drugs_shipment.drug_id = drugs_drug.id
JOIN drugs_drugunit ON drugs_drug.unit_id = drugs_drugunit.id
LEFT JOIN drugs_movement ON (drugs_movement.shipment_id = drugs_shipment.id AND drugs_movement.DATE < "2025-12-11" )
WHERE drugs_shipment.date_of_comming < "2025-12-11"
AND (drugs_shipment.date_of_run_out IS NULL OR drugs_shipment.date_of_run_out > "2025-12-11")
GROUP BY drugs_shipment.drug_id
不允許同時使用 window 函數(OVER 子句)和分組(GROUP BY 子句)。 您需要使用另一個 window function 或嵌套查詢來執行此操作。
SELECT drug_id
,drug_name
,drug_unit
,SUM(total_amount) OVER (PARTITION BY drug_id)
FROM
(
SELECT drugs_shipment.drug_id,
drugs_drug.NAME AS drug_name,
drugs_drugunit.NAME AS drug_unit,
drugs_shipment.initial_amount - Sum(Ifnull(drugs_movement.amount, "0")) OVER (partition BY drugs_shipment.id) AS
total_amount
FROM drugs_shipment
JOIN drugs_drug
ON drugs_shipment.drug_id = drugs_drug.id
JOIN drugs_drugunit
ON drugs_drug.unit_id = drugs_drugunit.id
LEFT JOIN drugs_movement
ON ( drugs_movement.shipment_id = drugs_shipment.id
AND drugs_movement.date < "2025-12-11" )
WHERE drugs_shipment.date_of_comming < "2025-12-11"
AND ( drugs_shipment.date_of_run_out IS NULL
OR drugs_shipment.date_of_run_out > "2025-12-11" )
) DS
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.