查询订单详细信息时,获取特定类别中的总订单

时间:2012-02-07 12:22:53

标签: sql sql-server-2008

我有一个订单表,其中包含订单明细和名为Category的列,其中Category是订单类型。

现在客户可以搜索订单详情。

现在我想写一个查询显示订单详情和一个名为TotalOrder的列,它将显示所有客户为该类别下的TotalOrders,

示例说明订单表,如

OrderID  CustomerID  OrderDetails Category   
1         1           test         A1
2         1           test1        A2
3         2           test3        A2
4         3           test4        A2

因此,如果查询订单ID 1

结果与订单ID 2相同

OrderID   Cust_ID     OrderDetails  Category      TotalOrdersInThisCategory
2         1           test          A2            3     

此方案是对实际问题的演示。

我怎样才能实现这个目标?

我是否需要在一个查询中获取Order详细信息,并使用Category by Category子句获取另一个查询,然后进行内部联接。任何更好的想法都是可观的。

订单详情将有数百万条记录。

请为此问题建议一些更好的标题

感谢任何帮助

2 个答案:

答案 0 :(得分:2)

你可以尝试一下,看看它是否运行得更好:

SELECT *
FROM (  SELECT *, COUNT(*) OVER(PARTITION BY Category) TotalOrdersInThisCategory
        FROM OrderTable) A
WHERE OrderId = 2

答案 1 :(得分:0)

SELECT 
  OrderID,
  Cust_ID,
  OrderDetails,
  Category,
  (select count(*) from orders where category = o.category) TotalOrdersInThisCategory  
FROM
  Orders o

或者你可以试试这个:

SELECT 
  o.OrderID,
  o.Cust_ID,
  o.OrderDetails,
  o.Category,
  c.TotalOrdersInThisCategory  
FROM
  Orders o
INNER JOIN (select category, count(*) from orders group by category) c
        ON o.Category = c.Category