我有一个订单表,其中包含订单明细和名为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子句获取另一个查询,然后进行内部联接。任何更好的想法都是可观的。
订单详情将有数百万条记录。
请为此问题建议一些更好的标题
感谢任何帮助
答案 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