SQL Server查询由两个参数组成

时间:2013-08-29 10:03:33

标签: sql sql-server

我有一张桌子让我们说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)   

2 个答案:

答案 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