Sql 添加计算结果中出现值的次数的列

Sql 添加计算结果中出现值的次数的列,sql,Sql,我有一个5列的查询。我想添加1列,该列定义第2列(ItemCode)中的值在结果中出现的次数 这是我的疑问: SELECT Items.Description_0 AS [Items.Description], Items.ItemCode, warehouse_location, Stock.Quantity AS StockQty, Stock.warehouse FROM ((SELECT gbkmut.artcode, gbkmut.warehouse, ISNULL(gbk

我有一个5列的查询。我想添加1列,该列定义第2列(ItemCode)中的值在结果中出现的次数

这是我的疑问:

SELECT 

Items.Description_0 AS [Items.Description], 
Items.ItemCode,
warehouse_location, 
Stock.Quantity AS StockQty,
Stock.warehouse

FROM 
((SELECT gbkmut.artcode, gbkmut.warehouse, ISNULL(gbkmut.warehouse_location,'') AS warehouse_location, 
SUM(gbkmut.aantal) AS Quantity FROM gbkmut

INNER JOIN Items ON Items.ItemCode = gbkmut.artcode 

INNER JOIN voorrd ON voorrd.artcode=gbkmut.artcode 
AND voorrd.magcode=gbkmut.warehouse 

INNER JOIN ItemUnits ON ItemUnits.Unit = Items.PackageDescription 
WHERE gbkmut.reknr = Items.GLAccountDistribution 
AND (( gbkmut.transtype IN ('N', 'C', 'P', 'X')  
AND gbkmut.datum BETWEEN {d '2000-01-09'} AND {d '2031-02-08'} )  )    
AND  (gbkmut.warehouse='MAG1' )   

AND Items.Type IN ('S','B')  
AND NOT (Items.GLAccountAsset IS NOT NULL AND     Items.IsSerialNumberItem=1)  AND NOT (Items.Type = 'S' AND    ItemUnits.UnitType = 'T') 

GROUP BY gbkmut.artcode, gbkmut.warehouse,   ISNULL(gbkmut.warehouse_location,'')

HAVING SUM(gbkmut.aantal) > 0)) Stock

INNER JOIN Items ON Items.ItemCode=Stock.artcode
WHERE Items.ItemCode like '10.27021%'

ORDER BY Items.ItemCode

惰性版本,使用公共表表达式(cte):


最简单的解决方法是使用cte。你有例子吗?
with cte as
(
[your huge select]
)
select t1.*, t2.codecount 
from cte t1
join (select ItemCode, count(*) as codecount from cte group by ItemCode) as t2
    ON t2.ItemCode = t1.ItemCode