我的数据如下所示

我的数据表如下所示:

client_id   Status
   1         a
   1         b
   1         d
   1         e
   2         a
   2         d
   3         a
   3         b
   3         e
   4         a
   4         d
   5         b
  

我需要按状态同时具有a和d值的客户端进行分组

上面的结果集应该返回

client_id     a_d_Flag
  1             Yes
  2             Yes
  3             No
  4             Yes
  5             No

-oh my 天.

SELECT c.client
    , CASE WHEN c.Status = 'a' AND c.status = 'd'
    THEN 'Yes'
    ELSE 'No'
    END AS a_d_Flag
FROM client_details c
GROUP BY c.client
HAVING c.Status = 'a' AND c.status = 'd'

推荐答案

使用CASE表达式判断Status并计算ad

select client_id, 
       case when count(case when Status in ('a', 'd') then Status end) = 2
            then 'Yes'
            else 'No'
            end
from   client_details
group by client_id

这是假设你的client_id没有重复的Status.

如果你有这样的

3         a
3         a
3         b

count改为count(distinct case ...)

Sql相关问答推荐

如何返回字符串中包含相同值的数据?

PG SQL中按条件聚合值

SQL JOIN of 2 Table with 2 sum

为什么postgres中CURRENT_TIMESTAMP的日期与CURRENT_DATE不同?

对非RUST源代码字符串使用`stringify!`,例如SQL查询

我希望以正确的升序获取SQL结果.怎样才能得到它们?

SQL:如何取上一年的平均值?

为什么我的SQL标量函数有时会抛出";子查询返回多个值.这是不允许的.

基于多参数的SQL Server条件过滤

其中使用表名作为;行值;记录?

配置单元查询失败:无法识别';附近的输入;LEFT'';(select子句中的';';col'

YEAR 函数仍然不可SARGable 吗?

Postgres,使用 select 插入多个值

通过ID和数据找到每个不同的值

INSERT INTO 语法

如何在 case 语句中使用聚合?

在 SQL 查询中创建滚动日期

如何在 SQL Server 中将 -13422.8450 舍入到 -13422.84

如何获得上个月和下个月之间的销售额差异

将单行中的多个行值转换为列