我有一个表,假设dbo.Orders,我有一个查询:
SELECT Orders, COUNT(*) FROM dbo.Orders
GROUP BY Orders结果是
Order1 7
Order2 4
Order3 6
Order4 5
EtcA有一列,每个订单号都是- 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,因此一个项目可以在表中出现多次:
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) 发布于 2013-08-29 18:48:18
我想你是在找这样的东西
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 aggregate functions
发布于 2013-08-30 00:02:57
我不确定你想要实现什么,但这可能会有所帮助:
Declare @OrdersParameter
Set @OrdersParameter = (SELECT distinct Orders FROM dbo.Orders)
SELECT Orders, COUNT(*) FROM dbo.Orders
WHERE Orders in (@OrdersParameter)
GROUP BY Ordershttps://stackoverflow.com/questions/18507932
复制相似问题