2014-04-22 45 views
-1

下面的查詢不被SQL Server解析,我可以理解列名需要別名,我已經同樣做到了。查詢背後的想法是使用CTE輸出行數。輸出總行

DECLARE @TotalRows AS INT = 0 -- OUTPUT 
WITH orders AS 
(
    SELECT @TotalRows = COUNT(CustomerID),SalesOrderID, CustomerID, OrderDate 
    FROM Sales.SalesOrderHeader 
    WHERE OrderDate = '2007/07/01' 
) 
SELECT c.CustomerID, 
     orders.SalesOrderID, 
     orders.OrderDate 
FROM Sales.Customer AS c 
    INNER JOIN orders 
    ON c.CustomerID = orders.CustomerID 
ORDER BY orders.OrderDate DESC; 

如何修改查詢以產生所需的retult?

謝謝。

+1

你能說出錯... –

+0

算什麼?爲什麼它需要成爲一個cte? – Paparazzi

回答

0

試試這個

SELECT C.CustomerID, 
     O.SalesOrderID, 
     O.OrderDate 
FROM Sales.Customer AS C 
    INNER JOIN Sales.SalesOrderHeader O ON 
     C.CustomerID = O.CustomerID 
WHERE O.OrderDate = '2007/07/01' 
ORDER BY O.OrderDate DESC; 
+0

謝謝。但是從查詢中不會輸出行數。我希望能夠使用CTE輸出行數。 – dLight

0

總產量的行或列的數量不明確

select c.CustomerID, 
     o.SalesOrderID, 
     o.OrderDate, 
     count(*) 
    FROM Sales.Customer AS c 
    JOIN Sales.SalesOrderHeader o 
    ON c.CustomerID = o.CustomerID 
    and o.OrderDate = '2007/07/01' 
group by c.CustomerID, o.SalesOrderID, o.OrderDate 
order by o.OrderDate desc 

select count(*) 
    FROM Sales.Customer AS c 
    JOIN Sales.SalesOrderHeader o 
    ON c.CustomerID = o.CustomerID 
    and o.OrderDate = '2007/07/01' 

select count(distinct(CustomerID)) 
    FROM Sales.SalesOrderHeader o 
where o.OrderDate = '2007/07/01' 
0

你所要做的是不可能的。

查詢要麼返回結果集,要麼給變量賦值。從來沒有在同一時間。

消息141,級別15,狀態1,行3,一個 值分配給變量的SELECT語句不能與數據檢索 操作相結合。