对于作业作业,我需要编写一个查询,该查询显示不同类型的库存(咖啡、茶或空)及其总价值之和(库存*价格),因此在查询运行后,它应该是一个3x2表。完整的问题是:“创建一个名为CoffeeTotal.sql的新查询,该查询将汇总每种商品类型(咖啡和茶)的价格。使用案例语句并按项目类型显示结果。将”总价值“转换为”$“。
我知道输出应该是:
Coffee | $1242571.75
Tea | $211716.70
NULL | $1455288.45但我很难写这个查询。目前,我的尝试是:
SELECT DISTINCT ItemType AS "Product Type",
SUM(CASE WHEN ItemType = 'Coffee' THEN Price*OnHand),
SUM(CASE WHEN ItemType = 'Tea' THEN Price*OnHand),
SUM(CASE WHEN ISNULL(ItemType) THEN Price*OnHand)
FROM Inventory但我100%肯定这段代码是错误的,我完全不知道如何在此时添加'$‘。提前谢谢你。
发布于 2019-05-10 13:41:25
一种可能的方法是将GROUP BY与CASE和格式()函数结合使用(如果使用Server 2012+):
输入:
CREATE TABLE #Inventory (
ItemType varchar(10),
Price numeric(10, 2),
OnHand int
)
INSERT INTO #Inventory
(ItemType, Price, OnHand)
VALUES
('Coffee', 1.02, 21),
('Coffee', 1.02, 22),
('Coffee', 1.02, 23),
('Coffee', 1.02, 24),
('Tea', 2.01, 11),
('Tea', 2.01, 12),
('Drink', 3.03, 1),
(NULL, 13.13, 3):
SELECT
CASE
WHEN ItemType <> 'Coffee' AND ItemType <> 'Tea' THEN NULL
ELSE ItemType
END AS ItemType,
FORMAT(SUM(Price * OnHand), '$0.00') AS Total
FROM #Inventory
GROUP BY
CASE
WHEN ItemType <> 'Coffee' AND ItemType <> 'Tea' THEN NULL
ELSE ItemType
END输出:
ItemType Total
NULL $42,42
Coffee $91,80
Tea $46,23https://stackoverflow.com/questions/56078655
复制相似问题