Мне нелепо просить об этом, но я так долго смотрю на свой код, и не могу понять, какой очевидный ответ мне не хватает:
Использование базы данных AdventureWorks2016 У меня есть следующий запрос:
declare @OrderFrequency table (CustomerID int, OrderYear int, OrderFrequency int)
;with OrderFrequency as
(
Select
CustomerID,
datepart(month, OrderDate) OrderMonth,
datepart(year, OrderDate) OrderYear,
cast(datepart(month, OrderDate) as nvarchar) +'/'+cast(datepart(year, OrderDate) as nvarchar) MonthYearCode
from Sales.SalesOrderHeader
group by CustomerID, datepart(month, OrderDate), datepart(year, OrderDate)
)
insert into @OrderFrequency
Select CustomerID, OrderYear, count(distinct MonthYearCode) OrderFrequency
from OrderFrequency
group by CustomerID, OrderYear
order by CustomerID, OrderYear
declare @CTETable table (CustomerID int, OrderTotal float, OrderMonth int, OrderYear int)
;with CTE as
(
Select
CustomerID,
sum(TotalDue) OrderTotal,
datepart(month, OrderDate) OrderMonth,
datepart(year, OrderDate) OrderYear
from Sales.SalesOrderHeader
group by CustomerID, datepart(month, OrderDate), datepart(year, OrderDate)
)
insert into @CTETable
select * from CTE
Select CTET.*
from @CTETable CTET
left outer join @OrderFrequency Ord on Ord.CustomerID = CTET.CustomerID
order by CTET.CustomerID, CTET.OrderYear
Мой последний оператор выбора возвращает все из CTET с дополнительными строками, возвращаемыми из объединения в @OrderFrequency.
Должна ли моя спецификация CTET возвращать ТОЛЬКО CTET?