【问题标题】:How to use CASE WHEN statement with multiple id如何使用具有多个 id 的 CASE WHEN 语句
【发布时间】:2020-12-30 01:00:58
【问题描述】:

在我的问题中使用 CASE WHEN 语句时遇到问题。我有多个 id 的数据,但每个多个 id 都有不同的问题。

我想在列而不是行中显示每个相同 id 的每个问题。我尝试使用 case when 和 group by 但第二个问题没有显示

这是我的数据:

ID Ticket Problem Date
400 A OFF 2020-12-30 07:00:00
400 A OUT 2020-12-30 09:00:00
410 A OFF 2020-12-30 09:00:00
420 B OUT 2020-12-30 07:00:00
430 B OUT 2020-12-30 09:00:00
430 B OUT 2020-12-30 13:00:00

我想这样显示

ID Ticket 2020-12-30 07:00:00 2020-12-30 09:00:00 2020-12-30 13:00
400 A OFF OUT -
410 A - OFF -
420 B OUT - -
430 B OUT - OUT

谢谢

【问题讨论】:

  • 让我们看看您的查询。另外,您是否打算基于Date 创建动态列?

标签: mysql sql case-when


【解决方案1】:

您可以按如下方式使用条件聚合:

Select ticket,
       max(case when date = your_date1 then problem end) as date_1_problem,
       max(case when date = your_date2 then problem end) as date_2_problem,
       max(case when date = your_date3 then problem end) as date_3_problem
  From your_table t
Group by ticket;

请注意,您必须在此查询中提供 date1、date2 和 date3 的值。

【讨论】:

  • 它有效。请问,为什么 max 在这种情况下有效?
  • 您也可以使用 min。它只是在使用 group by 时添加的。 Case when 将在您的情况下仅返回一个值,因此 min/max 将起作用。它称为条件聚合。
猜你喜欢
  • 2012-04-29
  • 1970-01-01
  • 2015-09-17
  • 2012-09-13
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多