SQL Server 用于获取具体值的SQL聚合函数

2admgd59  于 2023-01-12  发布在  其他
关注(0)|答案(2)|浏览(167)

我需要关于聚合功能的帮助。
我想知道的是,是否有可能从对我返回的列之一的分组查询中提取具体值,如下所示
储存
| 果实|颜色|股票|
| - ------|- ------|- ------|
| 苹果|红色|三十|
| 苹果|绿色|五个|
| 香蕉|黄色|四十|
| 浆果|红色|五个|
| 梨|绿色|五个|
SELECT SUM(stock), [?] FROM store GROUP BY fruit
[?]-〉我需要取一个具体的值,例如RED。但苹果的SUM必须有35。
这可以不用子查询来完成吗?
谢谢
我期待这个结果
| 色谱柱A|B栏|
| - ------|- ------|
| 三十五|红色|
在这种情况下,查询没有意义,但对于我个人的情况,它是有意义的。2我尝试使用STRING_AGG来获取数据,并在我的代码中进行分解,但这不是我认为的最佳方法

11dmarpk

11dmarpk1#

我认为您正在查找GROUP BY子句。请尝试以下操作:

SELECT SUM(stock), color
FROM store
GROUP BY color

这将返回所有颜色的列表,以及每种颜色的库存总和。

mzsu5hc0

mzsu5hc02#

我不太清楚你所说的“具体值”(singlular)是什么意思,因为可能有两个或更多的值...而且你提到了STRING_AGG()。另外,你在查询中省略了“水果”,这让事情有点混乱。尽管如此,这将使用STRING_AGG()或MAX()获得一个颜色值或所有颜色值,而不使用子查询:

-- the WITH is just a way to get your data into the query
    ;
WITH AdriansData AS
     (SELECT * FROM (VALUES('apple', 'red', 30),
                           ('apple', 'green', 5),
                           ('banana', 'yellow', 40),
                           ('berry', 'red',   5),
                           ('pear', 'green',    5)
                                           ) AS X (fruit, color, stock)
         )

         SELECT fruit,
                SUM(stock),
                STRING_AGG(color, ', ') AS Colors,
                MAX(color) AS JustOneColor
                FROM AdriansData

                GROUP BY fruit

相关问题