gpt4 book ai didi

mysql - 根据某个字段值在一行中分组并得到结果

转载 作者:行者123 更新时间:2023-11-29 02:31:35 25 4
gpt4 key购买 nike

不久前,我接到了一个任务,要执行报告。我面临的问题如下。我有一张 table :

name      value   type
------------------------
100 Kasa | 50000 | B
100 Kasa | 30000 | A
80 Kasa | 500 | A
80 Kasa | 50 | B
200 Hello | 3000 | A
645 Bye | 1234 | B

我想要实现的是按名称分组,如果类型相同并且如果类型,则对求和不同,然后将其写入另一个单元格。我只有两种类型。

我想得到的结果是

name       valueB    valueA   
--------------------------
100 Kasa | 50000 | 30000
80 Kasa | 0 | 550
200 Hello | 0 | 3000
645 Bye | 1234 | 0

目前,我将它们分组在 php 中,这使代码变得一团糟,现在我希望有人可以帮助我用 mysql 来完成

最佳答案

我认为你的预期输出(结果)是错误的
应该是:

NAME        VALUEB  VALUEA
--------------------------
100 Kasa 50000 30000
200 Hello 0 3000
645 Bye 1234 0
80 Kasa 50 500

您可以为此使用SUM 函数

使用 CASE 语句:

SELECT name,
SUM(CASE type WHEN 'B'THEN value ELSE 0 END) valueB,
SUM(CASE type WHEN 'A' THEN value ELSE 0 END) valueA
FROM myTable
GROUP BY name;

或者用 IF 语句:

SELECT name,
SUM(IF (type = 'B' , value , 0 )) valueB,
SUM(IF (type = 'A' , value , 0 )) valueA
FROM myTable
GROUP BY name;

See this SQLFiddle

如果您的预期输出是这样的(NULL 而不是 0)

SELECT name,
GROUP_CONCAT(CASE type WHEN 'B'THEN value ELSE NULL END) valueB,
GROUP_CONCAT(CASE type WHEN 'A' THEN value ELSE NULL END) valueA
FROM myTable
GROUP BY name;

See this SQLFiddle

关于mysql - 根据某个字段值在一行中分组并得到结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12435175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com