如何根据其他列值汇总表?



decision表如下:

Id                decision                  
1                   NULL
1                   NULL
1                   yes
1                   NULL
2                   no
2                   no
2                   no
3                   yes
3                   no
3                   yes

结果应该返回:

Id                decision                  
1                   Decision Pending
2                   no
3                   yes

对于decision表中的每个Id:

  • 如果任何决策值为NULL,则将其设置为"决定pending"。如。id 1

  • 如果没有NULL并且任何决策都是yes,则最终
    决策被设置为&;yes&;。如。id 3

  • 如果没有NULL,所有的决定都是没有,那么最终决定设置为"no"。如。id 2

azure sql查询应该如何获得上述结果?

注:我是SQL的新手,所以很难弄清楚这一点。

SELECT 
id,
CASE
WHEN COUNT(*) > COUNT(decision)
THEN 'pending'
ELSE MAX(decision)
END
AS decision
FROM
decision
GROUP BY
id

GROUP BY id确保每个id得到一行。

COUNT(*)告诉你id有多少行。

COUNT(decision)告诉你有多少行有NOT NULL的决定。

如果组中的任何决策都是NULL

,那么COUNT(*) > COUNT(decision)就是TRUE

MAX(decision)在组中有yes值时返回yes,在组中没有yes值时返回no

一种方法是比较count(*)count(decision),它显示一行是否为空,并使用内联if来简洁地知道使用聚合

select id, Iif(Count(*)=Count(decision),Max(decision),'Decision Pending')
from Decision
group by id

相关内容

  • 没有找到相关文章

最新更新