我觉得问这个很可笑,但我已经盯着我的代码看了这么久,我看不出我遗漏了什么明显的答案:
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
我的最后一个select语句将从CTET返回all,并从@OrderFrequency上的join返回额外的行。
我的CTET规格*是否只返回CTET?