从 CTE 查询中获取总数

账单

我有以下查询:

WITH Years AS
( 
    SELECT 2004 AS [Year]
    UNION
    SELECT 2005
    UNION
    SELECT 2006
    UNION
    SELECT 2007
    UNION
    SELECT 2008
) 
SELECT *
FROM Years

结果:

Years >> Alias Column
2005
2006
2007
2008

那将回归岁月。根据那些年,我需要从AdventureWorks2012.Sales.SalesOrderHeader

我应该如何编码?联盟?我不应该修改我的第一个代码,而是需要在它之后添加一些东西,所以当我选择代码时,F5(执行),它应该显示总数。此外,最后应该有一个字符串“Total Orders:”加上来自 CTE 的所有年份的总和。

结果如下:

Year            TotalOrders
----------------------------
2005             1379
2006             3692
2007            12443
2008            13951
Total Orders:   31465
切斯特林

首先,您应该获得 AdventureWorks2012 中的订单日期年份等于您在 CTE 中的年份的计数,然后按年份对其进行分组 - 这是我下面查询中的 CTE“临时”。然后对计数求和并按联合添加“总订单:”。

temp AS 
(
    SELECT      CAST([Year] AS Varchar(15)) AS [Year],
                COUNT(*) AS [TotalOrders]
    FROM        Years
    INNER JOIN  AdventureWorks2012.Sales.SalesOrderHeader
    ON          DATEPART(YEAR, OrderDate) = Year
    GROUP BY    [Year]
)

SELECT  [Year],
        [TotalOrders] 
FROM    temp 
UNION
SELECT  'Total Orders: ',
        SUM([TotalOrders]) 
FROM temp

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章