2015-08-26 120 views
-1

我想在表的末尾添加总目标列,但无法通过CUBE设置它,因为那么它表示b.x无效。我该怎么做?SQL GROUP BY WITH CUBE

DECLARE @Weeks VARCHAR(MAX) = '' 
    SELECT @Weeks += (QUOTENAME([Week]) + ',') 
FROM 
(Select Distinct [Week] from Fixture 
) as z 
SET @Weeks = LEFT(@Weeks, LEN(@Weeks) - 1) 
print @Weeks 

DECLARE @SQL NVARCHAR(MAX) = '' 
SET @SQL = ' 

    select * 
    from 
    (
    Select Home as Team, [Week] as Weeks, [Home Score] as Goals From Fixture 
    group by Home,Week, [Home Score] 
    UNION 
    Select Away as Team, [Week] as Weeks, [Away Score] as Goals From Fixture 
    group by Away,Week, [Away Score] 
    ) as A 
PIVOT 
(
    MAX(Goals) 
For Weeks 
    IN(' + @Weeks + ') 
    )b 


' 
exec (@SQL) 

回答

0

你可以改变你的内部查询财产以后这样的: -

Select Home as Team, [Week] as Weeks, [Home Score] as Goals From Fixture 
group by Home,Week, [Home Score] 
UNION ALL 
Select Away as Team, [Week] as Weeks, [Away Score] as Goals From Fixture 
group by Away,Week, [Away Score] 
UNION ALL 
Select 'Total', NULL, SUM([Home Score]) + SUM ([Away Score]) as 'Total Goals' From Fixture 

这个逻辑可以帮助你。