首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将列的组元素分组为多个子组( SQL )

将列的组元素分组为多个子组( SQL )
EN

Stack Overflow用户
提问于 2020-09-02 17:35:21
回答 2查看 44关注 0票数 0

我正在观察不同品种的牛,以及它们的AnimalTypeCodeBreedCateoryID和由此产生的Growth

我有以下查询

代码语言:javascript
运行
复制
SELECT DATEPART(yyyy,[KillDate])
        ,[AnimalTypeCode]
        ,AVG([Growth])
        ,[BreedCategoryID]
  FROM [dbo].[tblAnimal]
  WHERE (AnimalTypeCode='C'
        or AnimalTypeCode= 'E')
    GROUP BY DATEPART(yyyy,[KillDate])
        ,[AnimalTypeCode]
        ,[BreedCategoryID]
    GO

这个查询很好,给了我几乎我想要的东西,但是BreedCategoryID编号从1到7,我想对它们进行分组:

代码语言:javascript
运行
复制
(1 = Pure Dairy),
(2 and 3 = Dairy)
(4, 5, 6 and 7 = Beef) 

因此,我不想得到每个BreedCategoryID的平均BreedCategoryID,而是要得到纯乳制品、乳制品和牛肉的平均值。

任何帮助都非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-02 17:39:02

您可以在cross apply子句中使用from分配一个新的“变量”:

代码语言:javascript
运行
复制
SELECT YEAR(KillDate]), a.AnimalTypeCode, v.grp,
        AVG([Growth])
FROM [dbo].[tblAnimal] a CROSS APPLY
     (VALUES (CASE WHEN a.BreedCategoryID IN (1) THEN 'Pure Dairy'
                   WHEN a.BreedCategoryID IN (2, 3) THEN 'Dairy'
                   WHEN a.BreedCategoryID IN (4, 5, 6, 7) THEN 'Beef'
              END)
     ) as v(grp)
WHERE a.AnimalTypeCode IN ('C', 'E')
GROUP BY YEAR(KillDate]), a.AnimalTypeCode, v.grp;

注意,我还引入了表别名,并对所有列引用进行了限定。

票数 0
EN

Stack Overflow用户

发布于 2020-09-02 17:59:01

在派生表(子查询)中进行计算。GROUP BY的结果:

代码语言:javascript
运行
复制
select killyear, [AnimalTypeCode], AVG([Growth]), BreedCat
(
  SELECT DATEPART(yyyy,[KillDate]) killyear
        ,[AnimalTypeCode]
        ,[Growth]
        ,case when [BreedCategoryID] = 1 then 'Pure Dairy'
              when [BreedCategoryID] in (2, 3) then 'Dairy'
              when [BreedCategoryID] in (4, 5, 6, 7) then 'Beef'
         end BreedCat
  FROM [dbo].[tblAnimal]
  WHERE (AnimalTypeCode='C'
        or AnimalTypeCode= 'E')
) dt
GROUP BY killyear
        ,[AnimalTypeCode]
        ,BreedCat
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63710817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档