我有一张桌子让我们说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按OrderCounter中的某个值选择每个Order行 - 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)
答案 0 :(得分: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 aggregate functions了解更多信息
答案 1 :(得分:0)
我不确定你要完成什么,但这可能会有所帮助:
Declare @OrdersParameter
Set @OrdersParameter = (SELECT distinct Orders FROM dbo.Orders)
SELECT Orders, COUNT(*) FROM dbo.Orders
WHERE Orders in (@OrdersParameter)
GROUP BY Orders