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…. )

并通过 OrderCounter 中的某个值选择每个订单行 – 与相应订单相关的 max、max-1、max-2 等

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

看来我的问题不容易表述。我有一个表,其中有两列——Item 和 ItemCounter,所以一个 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 回答