已搜索hi and low,似乎无法找到如何做到这一点。我有一个两列的表。只选一条记录
Order route
===== =====
Order_1 100
Order_1 101
Order_2 102
Order_3 103
Order_4 104
我想要的结果是,提前
Order_2 102
Order_3 103
Order_4 104
感谢。
已搜索hi and low,似乎无法找到如何做到这一点。我有一个两列的表。只选一条记录
Order route
===== =====
Order_1 100
Order_1 101
Order_2 102
Order_3 103
Order_4 104
我想要的结果是,提前
Order_2 102
Order_3 103
Order_4 104
感谢。
Order
是保留关键字,所以我用order_column
代替。
首先,测试数据:
create table order_route_table(order_column varchar2(20)
, route number);
insert into order_route_table
select 'Order_1', 100 from dual
union all select 'Order_1', 101 from dual
union all select 'Order_2', 102 from dual
union all select 'Order_3', 103 from dual
union all select 'Order_4', 104 from dual;
然后传统上:
select order_column, min(route)
from order_route_table
group by order_column
having count(*) = 1;
与分析:
select order_column, route
from (select order_column
, route
, count(*) over (partition by order_column) as order_count
from order_route_table)
where order_count = 1;
结果在任一种情况下:
ORDER_COLUMN ROUTE
-------------------- ----------
Order_2 102
Order_3 103
Order_4 104
请告诉我们你已经尝试过了。 – NickLH
SQL? C#?有点难以告诉你在这里之后... – kaveman
对不起,我很匆忙地在平板电脑上输入它。感谢您的修复。这是一个使用ODP.NET的C#sql字符串。香农的答案效果很好。太感谢了。真棒网站。 – ValiRossi