添加计算结果中出现时间值的列

时间:2016-02-09 15:01:47

标签: 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(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

1 个答案:

答案 0 :(得分:0)

懒惰版,使用公用表表达式(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