SQL Server中的多个聚合函数

时间:2017-09-25 08:21:05

标签: sql-server

我需要查询[贡献]。我使用了这个查询:

with ttt as     
(    
select 
(DYG.U_StyleId)[DYG Style]    
 ,Max(O1.CardCode) [Party Group Code],
MAX(O1.CardName) [Party Group Name]    
,MAX(OR1.DocDate) [Date]    
,sum(CONVERT(NUMERIC(15,2),(RDR1.PriceBefDi*RDR1.Quantity))) [JobAmount]    
,CONVERT(NUMERIC(15,2),SUM(RDR1.Quantity)) [Mtr]    
,CONVERT(NUMERIC(15,2),SUM(RDR1.U_Pcs))[Pcs]    
,(select sum(RDR1.PriceBefDi*RDR1.Quantity) from RDR1)  tqty    

from 
ORDR OR1    
left join RDR1 on RDR1.DocEntry = OR1.DocEntry     
left join OITM on RDR1.ItemCode = oitm.ItemCode    
LEFT JOIN OCRD ON OCRD.CardCode = OR1.CardCode    
LEFT JOIN OCRG ON OCRG.GroupCode = OCRD.GroupCode    
LEFT JOIN OCRD O1 ON O1.U_BCode = OCRD.U_GrpCod
LEFT JOIN 
( SELECT U_StyleId FROM RDR1 WHERE U_StyleId in 
('BLOOM','BLOOMING','DYD','DYD-R','DYED','Ex.CLR.','RAINBOW'))
 DYG ON DYG.U_StyleId = RDR1.U_StyleId    
    group by 
       DYG.U_StyleId    
                     ) 
   select 
    Style, [Party Group Code],
    [Party Group Name], JobAmount,
    (sum(JobAmount) / tqty * 100) [Contribution],
    [Date], [Pcs] 
from
    ttt 
  group by 
        Style 

我需要将上一个工作数量的总和除以上面的tqty。 但它显示了这个错误。

  

'专栏' ttt.Party Group Code'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。'

请帮我查询以获得正确的[贡献]金额。

1 个答案:

答案 0 :(得分:1)

试试这个:

select Style,[Party Group Code],[Party Group Name],JobAmount,[Date],[Pcs],
        100.0 * (sum(JobAmount) OVER (PARTITION BY Style))/tqty [Contribution]
    from ttt;
相关问题