[英]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.