我有以下查询:
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] 删除。
我来说两句