Sql “分类”;分组方式;按内容分组
我有一个视图,它是两个联接表的产物:Sql “分类”;分组方式;按内容分组,sql,join,grouping,Sql,Join,Grouping,我有一个视图,它是两个联接表的产物: ID Type 1 A 2 A 2 B 3 B 类型列中只能有两个值:A或B 我想将ID聚合为三类:Category_A、Category_B和Category_AB。如果ID仅与类型A关联,则将其分配为Category_A,如果ID与类型A和B关联,则将其与Categry_AB关联。根据这些规则,上述视图应分类如下: ID Category 1 Category_A 2 Category_AB 3 Category_C 是否可以
ID Type
1 A
2 A
2 B
3 B
类型列中只能有两个值:A或B
我想将ID聚合为三类:Category_A、Category_B和Category_AB。如果ID仅与类型A关联,则将其分配为Category_A,如果ID与类型A和B关联,则将其与Categry_AB关联。根据这些规则,上述视图应分类如下:
ID Category
1 Category_A
2 Category_AB
3 Category_C
是否可以编写一个SQL查询来实现这一点?我会对它们进行不同的命名,但逻辑是:
select id,
(case when min(category) = max(category)
then 'Category_' || min(category)
else 'Category_AB'
end)
from t
group by id;
独立于戈登的回答,我得出了以下结论
SELECT ID,
CASE
WHEN COUNT(*) > 1 THEN 'AB'
ELSE MAX(Type)
END AS Category
FROM Products
GROUP BY ID
请参见运行:)(1)用您正在使用的数据库标记您的问题。(2) 名字不是更自然的是
A
、AB
和B
?什么是“类别”| | min(类别)
?它在SQL Server中不起作用。请使用concat('Category',min(Category))
代替'Category|min(Category)
@JohnyL| |
是字符串连接的标准SQL运算符。SQL Server使用非标准的+
运算符。