gpt4 book ai didi

mysql - 将 CASE WHEN 与 GROUP BY 一起使用

转载 作者:行者123 更新时间:2023-11-29 00:38:41 25 4
gpt4 key购买 nike

背景:我正在尝试显示一个标题为:id、full_name、position_7、position_8、position_9 等的表格,如果某人在 7 月和 8 月是活跃员工,则 2012_Jul 和 2012_Aug 将显示在position_7 和 8 在一条线上。如果我不使用 GROUP BY,我会得到输出,但在 2 行。发生这种情况的原因是因为在 BLMths 表中,由于受雇超过 1 个月,一个人将有多个条目。

如果我不使用 GROUP BY,下面的查询将成功获取每个人的 ID、全名和月份。但问题是,如果我忽略使用 GROUP BY,我的表中的每个人都会有 4 行(或更多)。当我确实使用 GROUP BY 时,我得到了每个人 1 行的期望输出,但表格中我需要的数据并不全部存在。

有谁知道我做错了什么?或者有人知道为什么当我使用 GROUP BY 时,我的某些 CASE 语句中的数据似乎丢失了吗?

我知道这个问题的答案必须很简单,但我似乎无法解决它。任何帮助表示赞赏。非常感谢。

SELECT Blm.Ags, Blmths.Id, Ie.Full_Name, Blmths.Month,
CASE month
WHEN "2012-07-01" THEN 1
ELSE NULL
END AS Position_7,
CASE month
WHEN "2012-08-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_8,
CASE Blmths.Month
WHEN "2012-09-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_9,
CASE month
WHEN "2012-10-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_10,
CASE Blmths.Month
WHEN "2012-11-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_11,
CASE Blmths.Month
WHEN "2012-12-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_12,
CASE month
WHEN '2013-01-01' THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_1,
CASE month
WHEN "2013-02-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_2,
CASE month
WHEN "2012-03-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_3,
CASE Blmths.Month
WHEN "2013-04-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_4,
CASE Blmths.Month
WHEN "2013-05-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_5,
CASE Blmths.Month
WHEN "2013-06-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_6
FROM Bogus_Leadership_Months AS Blmths, Injection_Employees AS Ie,
Bogus_Leadership_Members AS Blm
WHERE Blmths.Id = Blm.Id
AND Ie.Ags = Blm.Ags
AND Ie.Centre_Id = '666'
GROUP BY Blm.Ags

最佳答案

您需要更加具体。这是针对什么数据库?它以什么方式不起作用?是发生错误还是没有返回您需要的结果? “表中我需要的数据不全”是什么意思?

如果每个人有多个记录会怎样,您希望如何聚合数据?

我猜你可能想要类似这些的东西(缩短):

SELECT Blm.Ags, Blmths.Id, Ie.Full_Name,
SUM(CASE Blmths.month
WHEN "2012-07-01" THEN 1
ELSE NULL
END) AS Position_7
FROM Bogus_Leadership_Months AS Blmths, Injection_Employees AS Ie,
Bogus_Leadership_Members AS Blm
WHERE Blmths.Id = Blm.Id
AND Ie.Ags = Blm.Ags
AND Ie.Centre_Id = '666'
GROUP BY Blm.Ags, Blmths.Id, Ie.Full_Name

这给出了那个人按月统计。

我看不到你想要的数据示例 - 你能重新发布吗?

关于mysql - 将 CASE WHEN 与 GROUP BY 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13228875/

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