首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在列中选择不同的值,然后显示派生列的总数?

如何在列中选择不同的值,然后显示派生列的总数?
EN

Stack Overflow用户
提问于 2019-05-10 13:23:58
回答 1查看 104关注 0票数 0

对于作业作业,我需要编写一个查询,该查询显示不同类型的库存(咖啡、茶或空)及其总价值之和(库存*价格),因此在查询运行后,它应该是一个3x2表。完整的问题是:“创建一个名为CoffeeTotal.sql的新查询,该查询将汇总每种商品类型(咖啡和茶)的价格。使用案例语句并按项目类型显示结果。将”总价值“转换为”$“。

我知道输出应该是:

代码语言:javascript
复制
Coffee | $1242571.75
Tea    | $211716.70
NULL   | $1455288.45

但我很难写这个查询。目前,我的尝试是:

代码语言:javascript
复制
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%肯定这段代码是错误的,我完全不知道如何在此时添加'$‘。提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 13:41:25

一种可能的方法是将GROUP BYCASE格式()函数结合使用(如果使用Server 2012+):

输入:

代码语言:javascript
复制
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)

代码语言:javascript
复制
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

输出:

代码语言:javascript
复制
ItemType    Total
NULL        $42,42
Coffee      $91,80
Tea         $46,23
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56078655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档