3

私はテーブルを持っていますOrderSpecs。からすべての行を選択する必要がありますがOrderSpecscustomer ID各注文の最後の出現(タイムスタンプによる)のみを。で選択しorder IDます。また、クエリで検出されたそれぞれのオカレンスの数をカウントしたいと思いますOrderID

これが私のテーブルです(重要な情報のみを表示するために要約されています):

OrderSpecs

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*

CustomerID日付と:で最新の注文行を選択すると、クエリは正常に機能します。

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)

しかし、それぞれのオカレンスの数を数える方法を理解することはできません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 
4

1 に答える 1

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)
于 2012-08-10T12:17:47.713 に答える