小编3AK*_*BAH的帖子

SQL:根据某些条件返回聚合结果

我需要帮助根据某些列的值(例如状态聚合)在 SQL Server 中得出结论。例如,下面是一个包含服务器任务及其状态的表格。

如果我想返回每个服务器的聚合状态,这里是规则:

  • 如果所有服务器任务都处于“提交”状态,则聚合服务器状态为“等待”
  • 如果所有任务都处于“完成”状态 - 聚合状态为“完成”
  • 如果不满足上述情况,则聚合服务器状态为“IN PROGRESS”

示例表:任务

服务器 任务状态 任务
服务器 1 跑步 1-1
服务器 1 完全的 1-2
服务器 1 已提交 1-3
服务器 2 完全的 2-1
服务器 2 完全的 2-2
服务器 3 已提交 3-1
服务器 3 已提交 3-2

示例查询结果:

服务器 完成
服务器 1 进行中
服务器 2 完毕
服务器 3 等待

到目前为止,我尝试使用以下查询但没有成功:

SELECT Server,
    CASE 
       WHEN Task_Status NOT IN ('RUNNING', 'COMPLETED') THEN 'AWAITING' -- Status SUBMITED
       WHEN Task_Status NOT IN ('RUNNING', 'SUBMITED') THEN 'DONE' -- Status …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

2
推荐指数
1
解决办法
87
查看次数

标签 统计

sql ×1

sql-server ×1

t-sql ×1