首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过给定“不包含在聚合函数中”(SQL-server)实现自连接和分组

通过给定“不包含在聚合函数中”(SQL-server)实现自连接和分组
EN

Stack Overflow用户
提问于 2011-04-19 22:14:39
回答 2查看 176关注 0票数 3

日安,这是我想要做的..

代码语言:javascript
复制
ITEM   |   CATEGORY    |    AMOUNT
Sponge         A              29
Sponge         B              32
Sponge         C              33
Sponge         D              34
Rod            A               1
Rod            B               2
Rod            C               3
Rod            D               4

我希望输出是这样的:

代码语言:javascript
复制
ITEM    |   A   |  B   |   C   |   D
Sponge     29      32      33      34
Rod        1       2       3        5

我已经尝试了GROUP BY的各种组合,但是我似乎不能让它工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-19 22:17:34

代码语言:javascript
复制
SELECT ITEM
      ,MAX(CASE WHEN CATEGORY ='A' THEN Amount END) AS A
      ,MAX(CASE WHEN CATEGORY ='B' THEN Amount END) AS B
      ,MAX(CASE WHEN CATEGORY ='C' THEN Amount END) AS C
      ,MAX(CASE WHEN CATEGORY ='D' THEN Amount END) AS D
FROM YourTable
GROUP BY ITEM

代码语言:javascript
复制
SELECT *
FROM YourTable
PIVOT (MAX(AMOUNT) FOR CATEGORY IN ([A],[B],[C],[D])) AS Pvt
票数 6
EN

Stack Overflow用户

发布于 2011-04-19 22:21:48

代码语言:javascript
复制
WITH    q AS
        (
        SELECT  *
        FROM    (
                VALUES
                ('Sponge', 'A', 29),
                ('Sponge', 'B', 32),
                ('Sponge', 'C', 33),
                ('Sponge', 'D', 34),
                ('Rod', 'A', 1),
                ('Rod', 'B', 2),
                ('Rod', 'C', 3),
                ('Rod', 'D', 4)
                ) q (item, category, amount)
        )
SELECT  *
FROM    q
PIVOT   (
        MAX(amount)
        FOR     category IN ([A], [B], [C], [D])
        ) AS qp
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5717773

复制
相关文章

相似问题

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