2012-08-10 91 views
3

我有一個表OrderSpecs。我需要選擇OrderSpecs中的所有行customer ID,但僅選擇order ID每個訂單的最後一次出現(通過時間戳記)。我還想讓我的查詢計算它爲每個OrderID找到的發生次數。SQL選擇最後一次出現的行和計數出現次數

這裏是我的表(濃縮至僅顯示關鍵信息):

OrderSpecs選擇按日期和CustomerID最近爲了行時

ID  OrderID CustomerID  CreatedDate     SpecDocument 
1  1   5     01/08/2012 11:00:00   *Amendment1* 
2  1   5     02/08/2012 15:32:41   *Amendment2* 
3  2   31    04/08/2012 16:19:00   *Amendment1* 
4  3   5     05/08/2012 12:10:12   *Amendment1* 
5  4   10    08/08/2012 09:32:56   *Amendment1* 
6  1   5     09/08/2012 11:47:02   *Amendment3* 

我的查詢工作正常:

SELECT 
    ID, CustomerID, EstimateNo, OrderYear, OrderNo, ProductionNo, AddedBy,  
    AddedDate, SizeLength, SizeWidth, HomeModelID, HomeTypeID, DrawingNo, 
    CustomerReference, BuildPieces, ProductionPieces, Notes, SpecDocument, OrderID 
FROM 
    OrderSpecs AS o 
WHERE 
    (AddedDate = (SELECT MAX(AddedDate) AS Expr1 
        FROM OrderSpecs AS i 
        WHERE (o.OrderID = OrderID))) 
    AND (CustomerID = @CustomerID) 

但是,我無法計算出如何計算一個occourances的數量每個OrderID

例如,我想我的產出表是這樣的(由CustomerID = 5搜索):

ID  OrderID  CustomerID  CreatedDate   SpecDocument  Count 
6  1   5    09/08/2012 11:47:02 *Amendment3*  3 
4  3   5    05/08/2012 12:10:12 *Amendment1*  1 
+0

它將有助於瞭解您正在使用的實際**數據庫系統**(以及該RDBMS的哪個版本)。 * SQL *只是*結構查詢語言* - 不是數據庫產品... – 2012-08-10 12:15:17

回答

1

應與SELECT(未經測試)一個子查詢工作

SELECT 
    ID, CustomerID, EstimateNo, OrderYear, OrderNo, ProductionNo, AddedBy,  
    AddedDate, SizeLength, SizeWidth, HomeModelID, HomeTypeID, DrawingNo, 
    CustomerReference, BuildPieces, ProductionPieces, Notes, SpecDocument, OrderID, 
    (SELECT COUNT(*) FROM OrderSpecs AS os WHERE o.OrderID=os.OrderID) as [Count] 
FROM 
    OrderSpecs AS o 
WHERE 
    (AddedDate = (SELECT MAX(AddedDate) AS Expr1 
        FROM OrderSpecs AS i 
        WHERE (o.OrderID = OrderID))) 
    AND (CustomerID = @CustomerID) 
+0

完美的工作!非常感謝Jonas。 – RobHurd 2012-08-10 13:29:56