簡體   English   中英

如何編寫帶數量單位轉換的分組查詢SQL?

[英]how to write group-by query SQL with quantity unit conversion?

Stock

Product  Quantity  Unit 
-------------------------------
001       5        box
001       10       bottle
001       60       gallon


Conversion

Unit1     Unit2    Rate
----------------------
box       bottle    20
bottle    gallon    30

Unit1 = Unit2 * Rate

如何編寫SQL查詢以特定單位(例如示例中的瓶子)求和(數量)?

select product, sum(quantity * ....) from Stock group by product

諸如 getRate(unit1, unit2) 之類的數據庫函數可以完成這項工作嗎? 性能怎么樣?

您需要展開轉換表,使其具有所有組合。 這是一次性的工作,但您需要添加如下行:

Unit1     Unit2    Rate
----------------------
box       bottle    20
bottle    gallon    30
gallon    bottle    1/30

然后你可以使用LEFT JOIN

SELECT s.product, SUM(s.quantity * coalesce(c.rate, 1))
FROM stock s LEFT JOIN
     conversion c 
     ON s.unit = c.unit1 AND c.unit2 = 'bottle'
GROUP BY s.product

暫無
暫無

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

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