此子查询中的错误
Error in this subquery
这个查询:
left join (select tSpent, Customerid
from (select SUM(spent) as tSpent, Customerid,
RN = ROW_NUMBER() OVER (PARTITION BY Customerid ORDER BY Customerid DESC)
from Customer_Sales
WHERE Customerid is not null)
where RN = 1) Sales ON Customer_Sales.Customerid = Data.Customerid
在 RN=1
行给我一个错误:
Incorrect syntax near the keyword 'where'
(select tSpent, Customerid
from (select SUM(spent) as tSpent, Customerid,
RN = ROW_NUMBER() OVER (PARTITION BY Customerid ORDER BY Customerid DESC)
from Customer_Sales
WHERE Customerid is not null) t --use a alias for the derived table
where RN = 1) Sales ON Customer_Sales.Customerid = Data.Customerid
不确定为什么要使用 row_number
。你还应该 group by customerid
.
内部查询可以简化为
select SUM(spent) as tSpent, Customerid
from Customer_Sales
WHERE Customerid is not null
group by customerid
因为您只是想获得每个客户的总花费。
ROW_NUMBER()
功能是在 SQL Server 2005 中引入的。因此您将无法使用它。正如 vkp 指出的那样,您还缺少子查询的别名,并且您不能在 WHERE
子句中使用刚刚在 SELECT
中分配的别名(过滤发生在 select 之前,基本上)。
这个查询:
left join (select tSpent, Customerid
from (select SUM(spent) as tSpent, Customerid,
RN = ROW_NUMBER() OVER (PARTITION BY Customerid ORDER BY Customerid DESC)
from Customer_Sales
WHERE Customerid is not null)
where RN = 1) Sales ON Customer_Sales.Customerid = Data.Customerid
在 RN=1
行给我一个错误:
Incorrect syntax near the keyword 'where'
(select tSpent, Customerid
from (select SUM(spent) as tSpent, Customerid,
RN = ROW_NUMBER() OVER (PARTITION BY Customerid ORDER BY Customerid DESC)
from Customer_Sales
WHERE Customerid is not null) t --use a alias for the derived table
where RN = 1) Sales ON Customer_Sales.Customerid = Data.Customerid
不确定为什么要使用 row_number
。你还应该 group by customerid
.
内部查询可以简化为
select SUM(spent) as tSpent, Customerid
from Customer_Sales
WHERE Customerid is not null
group by customerid
因为您只是想获得每个客户的总花费。
ROW_NUMBER()
功能是在 SQL Server 2005 中引入的。因此您将无法使用它。正如 vkp 指出的那样,您还缺少子查询的别名,并且您不能在 WHERE
子句中使用刚刚在 SELECT
中分配的别名(过滤发生在 select 之前,基本上)。