SQL-使用别名对值进行分组

时间:2018-10-10 10:11:49

标签: sql sql-server

如果我有一个简单的查询,如下所示,它返回产品中的所有商品;

SELECT Item
FROM Products

有没有一种方法可以对值进行分组并为每组值都有一个别名?

例如;

以上查询将返回类似于以下内容的内容;

cauliflower
celery
endive
fiddleheads
frisee
fennel
greens
Lamb
Beef
Chicken

所需结果:

第1组称为蔬菜;

    cauliflower
    celery
    endive
    fiddleheads
    frisee
    fennel
    greens

第2组称为“含肉”;

    Lamb
    Beef
    Chicken

在我的select语句中是否可以执行以下操作;

SELECT Meat, Vegetables
FROM Products

然后返回;

cauliflower
celery
endive
fiddleheads
frisee
fennel
greens
Lamb
Beef
Chicken

2 个答案:

答案 0 :(得分:2)

您可以使用SQL创建组,但是语言本身无法基于“ Lamb”的字符串值确定Lamb是肉还是蔬菜。您将必须手动在查询中创建组,或添加具有该值的新列,以便在系统中轻松使用

答案 1 :(得分:0)

我想您需要简单的where子句:

SELECT Item, <do aggregation whatever you need (i.e. count(), sum(), min/max)> 
FROM Products
WHERE Item = 'meat'
GROUP BY Item;

例如,您可以使用case表达式来定义组:

SELECT (case when Item in ('lamb', 'beef', 'chicken') then 'meat' else 'other' end) as Item, 
       <do aggregation whatever you need (i.e. count(), sum(), min/max)> 
FROM Products
GROUP BY (case when Item in ('lamb', 'beef', 'chicken') then 'meat' else 'other' end);