0

私はテーブルを持っているとしましょう dbo.Orders 私はクエリを持っています:

SELECT Orders, COUNT(*) FROM dbo.Orders
GROUP BY Orders

結果は

Order1     7
Order2     4
Order3     6
Order4     5
Etc

そして、各注文番号の列があります-OrderCounter。私が取得したいのはこれです:

SELECT * COUNT(*) FROM dbo.Orders
WHERE Orders IN (Order1,Order2,Order3…. )

AND を使用して各 Order 行を OrderCounter からの値 (max、max-1、max-2 など、それぞれの注文に関連付けられた値) で選択します。

Order1    MAX(Order1)
Order2    MAX(Order2)
Order3    MAX(Order3)
Order4    Max(Order4)
Etc

私の質問は定式化するのが容易ではないようです。Item と ItemCounter の 2 つの列を持つテーブルがあるため、1 つの Item をテーブルに複数回含めることができます。

1. Items ItemCounter ….n
2. Item1  1
3. Item2  1
4. Item2  2
5. Item3  1
6. Item3  2

これが私の架空のコードです。もちろん機能しませんが、取得したいものが表示されることを願っています。

SELECT * FROM Items
WHERE Item IN ('9108915', '9324853', '8029717') AND 
       IN (MAX(ItemCounter1) for Item1,     
           MAX(ItemCounter2) for Item2, 
           MAX(ItemCounter3) for Item3)   
4

2 に答える 2

0

あなたが何を達成しようとしているのかわかりませんが、これは役立つかもしれません:

Declare @OrdersParameter
Set @OrdersParameter = (SELECT distinct Orders FROM dbo.Orders)

SELECT Orders, COUNT(*) FROM dbo.Orders
WHERE Orders in (@OrdersParameter)
GROUP BY Orders
于 2013-08-29T16:02:57.010 に答える
0

私はあなたがこのようなものを探していると思います

SELECT OrderID, CustomerID, OrderDate, 
       COUNT(*) AS NumberOfItems, MAX(Quantity) 
       ItemWithMaxUnits, SUM(ItemPrice*ItemQuantity)  AS OrderTotalInMoney  
FROM dbo.Orders
WHERE Orders IN (Order1,Order2,Order3 )
GROUP BY OrderID, CustomerID, OrderDate

詳細については、SQL 集計関数を参照してください。

于 2013-08-29T10:48:18.450 に答える