如何解决将千克和克单位乘以每千克价格 选项1:使用外部查询:选项2:使用CTE:
当我必须计算耗材成本的值时,我要执行一项任务,我必须将priceperweight乘以重量。但重量也有公斤和克。当我乘以它时,得到的结果像是500克菠菜3000美元。这是我的计划。请帮忙。所有帮助,将不胜感激:D这是我的代码!非常感谢
select PricePerWeight * Weight from Supplies;
解决方法
使用CASE x WHEN y
将重量归一化为克或千克(我将使用克):
SELECT
s.*,CASE s.metric
WHEN 'Kilos' THEN ( s.weight * 1000 )
WHEN 'grams' THEN ( s.weight * 1 ) ELSE NULL
END AS weightInGrams
FROM
supplies AS s
然后添加additional units很简单:
SELECT
s.*,CASE s.metric
WHEN 'tonnes' THEN ( s.weight * 1000 * 1000 )
WHEN 'Kilos' THEN ( s.weight * 1000 )
WHEN 'grams' THEN ( s.weight * 1 )
WHEN 'jupiter' THEN ( s.weight * 1.9 * POW( 10,27 ) * 1000 )
WHEN 'lbs' THEN ( s.weight * 453.592 ) ELSE NULL
END AS weightInGrams
FROM
supplies AS s
假设您使用的是符合ISO的SQL,则需要使用外部查询或CTE,然后再乘以pricePerWeight
,我以公斤为单位。
请注意,下面的查询仍然使用g作为质量的基本单位,以避免由整数除法引起的问题(因为SQL不能轻松确保将数字文字处理为浮点数或小数而不是整数,即整数除法截断而不是四舍五入。
最终值是以下查询中的thePrice
列:
选项1:使用外部查询:
SELECT
s2.*,( s2.pricePerWeight * s2.weightInGrams ) / 1000.00 AS thePrice
FROM
(
SELECT
s.*,CASE s.metric
WHEN 'tonnes' THEN ( s.weight * 1000 * 1000 )
WHEN 'Kilos' THEN ( s.weight * 1000 )
WHEN 'grams' THEN ( s.weight * 1 )
WHEN 'jupiter' THEN ( s.weight * 1.9 * POW( 10,27 ) * 1000 )
WHEN 'lbs' THEN ( s.weight * 453.592 ) ELSE NULL
END AS weightInGrams
FROM
supplies AS s
)
选项2:使用CTE:
WITH s2 AS (
SELECT
s.*,CASE s.metric
WHEN 'tonnes' THEN ( s.weight * 1000 * 1000 )
WHEN 'Kilos' THEN ( s.weight * 1000 )
WHEN 'grams' THEN ( s.weight * 1 )
WHEN 'jupiter' THEN ( s.weight * 1.9 * POW( 10,27 ) * 1000 )
WHEN 'lbs' THEN ( s.weight * 453.592 ) ELSE NULL
END AS weightInGrams
FROM
supplies AS s
)
SELECT
s2.*,( s2.pricePerWeight * s2.weightInGrams ) / 1000.00 AS thePrice
FROM
s2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。