不是瀑布式分组的SQL CASE语句
我有三类:不是瀑布式分组的SQL CASE语句,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有三类: categories number_units CAT_A 10 CAT_B 20 CAT_C 30 如果我对列类别进行分组,我将得到上面看到的3个类别。但如果我想做一个案例陈述,比如: SELECT CASE WHEN categories LIKE 'CAT%' ... 要显示包含CAT的所有类别的总和,它将排除CAT_A、_B、_C等类别 如何编写将获得以下结果的查询: categories sum CAT
categories number_units
CAT_A 10
CAT_B 20
CAT_C 30
如果我对列类别进行分组,我将得到上面看到的3个类别。但如果我想做一个案例陈述,比如:
SELECT CASE WHEN categories LIKE 'CAT%' ...
要显示包含CAT的所有类别的总和,它将排除CAT_A、_B、_C等类别
如何编写将获得以下结果的查询:
categories sum
CAT 60
CAT_A 10
CAT_B 20
CAT_C 30
许多数据库支持标准分组集功能:
select coalesce(category, 'CAT'), sum(number_of_units)
from t
group by grouping sets ((), category);
许多数据库支持标准分组集功能:
select coalesce(category, 'CAT'), sum(number_of_units)
from t
group by grouping sets ((), category);
我认为使用汇总是您的下注选项。在这个场景中,使用多维数据集也会返回相同的结果
create table cat(categories varchar(50), number_units int);
insert into cat values('CAT_A', 10);
insert into cat values('CAT_B', 20);
insert into cat values('CAT_C', 30);
查询:
select Coalesce(categories,'CAT')categories ,sum(number_units) [sum]
from cat
group by categories with rollup
order by categories
GO
输出:
类别
总和
猫
60
猫科动物
10
B类
20
C类
30
我认为使用汇总是您的下注选项。在这个场景中,使用多维数据集也会返回相同的结果
create table cat(categories varchar(50), number_units int);
insert into cat values('CAT_A', 10);
insert into cat values('CAT_B', 20);
insert into cat values('CAT_C', 30);
查询:
select Coalesce(categories,'CAT')categories ,sum(number_units) [sum]
from cat
group by categories with rollup
order by categories
GO
输出:
类别
总和
猫
60
猫科动物
10
B类
20
C类
30
使用您正在使用的数据库标记您的问题。在sqlhi中使用rollup,您可以根据您感兴趣的表达式进行分组,前提是表达式不是语句。使用您正在使用的数据库标记您的问题。在sqlhi中使用rollup,你可以根据你感兴趣的表达式分组,因为case是一个表达式而不是一个语句。case是显示两个分组的一种方式。比如说,如果我想用CAT对所有内容进行分组,然后对该列中的任何值进行分组,不管它是否有CAT?很好!这个和卷起有什么区别?@banana_99。通过分组集,可以精确地指定要分组的列。ROLLUP实现了一个层次集,所以它没有那么灵活。是显示两个分组的一种方式。比如说,如果我想用CAT对所有内容进行分组,然后对该列中的任何值进行分组,不管它是否有CAT?很好!这个和卷起有什么区别?@banana_99。通过分组集,可以精确地指定要分组的列。ROLLUP实现了一个层次集,因此它没有那么灵活。