繁体   English   中英

按SQL中的计算字段分组

[英]group by a calculated field in SQL

我写了这样的查询

CASE 
              WHEN [col1] = 's' THEN '1'
              WHEN [col1] = 't' THEN '2' 
              WHEN [col1] = 'u' THEN '3' 
              WHEN [col2] = 'v' THEN '4'
.......
END AS product,
SUM(col3)
FROM dbo.TableA

我想在产品上分组吗? 怎么做?

您需要做的是为别名的CASE列使用子查询。 将查询作为子查询,您可以group by名列进行group by

select product
from
(
    select
    CASE  
        WHEN [col1] = 's' THEN '1' 
        WHEN [col1] = 't' THEN '2'  
        WHEN [col1] = 'u' THEN '3'  
        WHEN [col2] = 'v' THEN '4'
    END AS product, 
    SUM(col3) as Col3Sum
    FROM dbo.TableA 
) a
group by product

您还需要在Group By拥有CASE 您不能在GROUP BY使用别名

SELECT yourColumn, otherColumn
   , CASE 
        WHEN [col1] = 's' THEN '1'
        WHEN [col1] = 't' THEN '2' 
        WHEN [col1] = 'u' THEN '3' 
        WHEN [col2] = 'v' THEN '4'
     END AS Product
   , anotherColumn 
FROM yourTable
GROUP BY CASE 
            WHEN [col1] = 's' THEN '1'
            WHEN [col1] = 't' THEN '2' 
            WHEN [col1] = 'u' THEN '3' 
            WHEN [col2] = 'v' THEN '4'
         END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM