我有以下查询:
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
答案 0 :(得分:0)
首先,您应该获得AdventureWorks2012中的Orderdate年份等于您在CTE中的年份的计数,然后将其按年份分组 - 这是我在下面的查询中的CTE“temp”。然后将计数加起来并按联盟添加“总计订单:”。
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