[英]Oracle SQL query with Group by Not working
Please help me to get list of only upto 4 orders(Order ID,TagID,Name, Placed Date and DeliveryDate) from each group of Tag_ID using Oracle PL SQL query for the below Table 请帮助我使用下表的Oracle PL SQL查询从每个Tag_ID组中获取最多4个订单(订单ID,TagID,名称,下达日期和交货日期)的列表
Order_ID Order_Name Tag_ID Order_Placed_Date Order_Delivery_Date
101 PEN 011243 02/14/2019 02/18/2019
302 PEN 011243 01/17/2019 01/20/2019
202 Eraser 011348 01/09/2019 02/12/2019
388 Eraser 011348 02/18/2019 02/20/2019
213 PEN 011243 01/19/2019 02/28/2019
291 Pencil 025489 01/11/2019 01/17/2019
450 PEN 011243 02/04/2019 02/08/2019
376 Pencil 025489 01/11/2019 01/17/2019
225 PEN 011243 02/02/2019 02/03/2019
326 Eraser 011348 02/10/2019 02/12/2019
119 Eraser 011348 02/05/2019 02/07/2019
300 PEN 011243 02/04/2019 02/08/2019
137 Eraser 011348 02/05/2019 02/07/2019
022 Pencil 025489 12/29/2018 12/31/2018
131 Pencil 025489 01/07/2019 01/08/2019
319 Pencil 025489 01/01/2019 01/03/2019
280 PEN 011243 02/04/2019 02/08/2019
127 Eraser 011348 02/05/2019 02/07/2019
161 Pencil 025489 01/02/2019 01/10/2019
241 Pencil 025489 01/11/2019 01/17/2019
I tried with the below query but getting error: ORA-00979: not a GROUP BY expression: 我尝试使用以下查询,但收到错误:ORA-00979:不是GROUP BY表达式:
Select Order_ID, Order_Name,Tag_ID,Order_Placed_Date, Order_Delivery_Date
from Table1
where rownnum <=4
group by Tag_ID order by Tag_ID
Use a Common Table Expression/Subquery Factoring and an Oracle Analytic Function to partition the results, instead of GROUP BY
. 使用通用表表达式/子查询分解和Oracle解析函数对结果进行分区,而不是
GROUP BY
。 Then filter by order_row <= 4
: 然后按
order_row <= 4
过滤:
with cte_order_detail as
(
Select
t.Order_ID,
t.Order_Name,
t.Tag_ID,
t.Order_Placed_Date,
t.Order_Delivery_Date,
row_number() over (partition by t.Tag_ID order by t.Order_ID) as order_row
from Table1 t
)
select
od.Order_ID,
od.Order_Name,
od.Tag_ID,
od.Order_Placed_Date,
od.Order_Delivery_Date
from cte_order_detail od
where od.order_row <= 4
order by od.Tag_ID,
od.Order_ID;
Output: 输出:
| ORDER_ID | ORDER_NAME | TAG_ID | ORDER_PLACED_DATE | ORDER_DELIVERY_DATE |
|----------|------------|--------|----------------------|----------------------|
| 101 | PEN | 11243 | 2019-02-14T00:00:00Z | 2019-02-18T00:00:00Z |
| 213 | PEN | 11243 | 2019-01-19T00:00:00Z | 2019-02-28T00:00:00Z |
| 225 | PEN | 11243 | 2019-02-02T00:00:00Z | 2019-02-03T00:00:00Z |
| 280 | PEN | 11243 | 2019-02-04T00:00:00Z | 2019-02-08T00:00:00Z |
| 119 | Eraser | 11348 | 2019-02-05T00:00:00Z | 2019-02-07T00:00:00Z |
| 127 | Eraser | 11348 | 2019-02-05T00:00:00Z | 2019-02-07T00:00:00Z |
| 137 | Eraser | 11348 | 2019-02-05T00:00:00Z | 2019-02-07T00:00:00Z |
| 202 | Eraser | 11348 | 2019-01-09T00:00:00Z | 2019-02-12T00:00:00Z |
| 22 | Pencil | 25489 | 2018-12-29T00:00:00Z | 2018-12-31T00:00:00Z |
| 131 | Pencil | 25489 | 2019-01-07T00:00:00Z | 2019-01-08T00:00:00Z |
| 161 | Pencil | 25489 | 2019-01-02T00:00:00Z | 2019-01-10T00:00:00Z |
| 241 | Pencil | 25489 | 2019-01-11T00:00:00Z | 2019-01-17T00:00:00Z |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.