我有一个主表
你可以"项目表的不同UOM列,并为每个列分配优先级。然后使用first
聚合函数按优先级进行聚合。
create table master_item (barcode, article, uom, order_uom, name) as select '13000', '100', 'PC', 'T12', 'ABC' from dual union all select '13001', '101', 'PC', 'T06', 'DEF' from dual union all select '13001', '101', 'PC', 'C08', 'XYZ' from dual create table master_ (barcode, article, uom) as select cast(null as varchar2(10)), '100', 'PC' from dual union all select null, '100', 'T12' from dual union all select null, '101', 'T06' from dual
with mi as ( select article, uom, name, 1 as priority from master_item union all select article, order_uom, name, 2 as priority from master_item ) select distinct m.barcode, m.article, max(m.uom) keep(dense_rank first order by priority) as uom, max(mi.name) as name from master_ m left join mi on m.article = mi.article and m.uom = mi.uom group by m.barcode, m.article
-
您正在创建名为" master_item ";使用SELECT…从master_item…SQL错误:ORA-01731: circular view definition遇到
-
如果您的样本数据看起来像在问题中:
WITH
mstr AS
(
Select 13000 "BARCODE", 100 "ARTICLE", 'PC' "UOM", 'T12' "ORDERING_UOM", 'ABC' "A_NAME" From dual Union All
Select 13001, 101, 'PC', 'T06', 'DEF' From dual Union All
Select 13001, 101, 'PC', 'C08', 'XYZ' From dual
),
items AS
(
Select CAST(Null as VARCHAR2(15)) "BARCODE", '100' "ARTICLE", 'PC' "UOM" From dual Union All
Select CAST(Null as VARCHAR2(15)), '101', 'T06' From dual
)
…那么Select语句(经过一些小的修正)的结果与预期完全一致。您的代码应该使用JOIN函数而不是旧的,然后所有问题都可以在JOIN的ON子句中解决。对于上面的示例数据,您根本不需要GROUP BY。下面的代码基本上是基于您的代码,只是上面提到的一些调整:
SELECT i.BARCODE, i.ARTICLE, i.UOM, m.A_NAME
FROM items i
INNER JOIN mstr m ON ( i.BARCODE = m.BARCODE OR
( i.ARTICLE = m.ARTICLE AND (m.UOM = i.UOM OR m.ORDERING_UOM = i.UOM) )
)
--
-- R e s u l t
BARCODE ARTICLE UOM A_NAME
--------------- ------- --- ------
100 PC ABC
101 T06 DEF
- 如果您的mstr表看起来像这样,则可能出现行相乘的问题。
BARCODE ARTICLE UOM ORDERING_UOM A_NAME
---------- ---------- --- ------------ ------
13000 100 PC T12 ABC
13001 101 PC T06 DEF
13001 101 PC T06 XYZ
在本例中,items表中的article 101将连接到mstr表的两行,因为链接将由UOM和ORDERING_UOM列建立。按子句(或不同)分组没有帮助,因为这篇文章的名称不同。这种数据没有意义,因为它会说您有相同的ARTICLE、BARCODE、UOM和ORDERING_UOM,但A_NAME列不同。这可能会产生一个问题,您希望选择哪个A_NAME以及为什么?
相关内容
- 没有找到相关文章
最新更新
- React测试库:fireEvent更改不工作
- ASP.. NET Core:在Program.cs中控制版本依赖注入
- 在 C 中,'int *'是派生数据类型吗?
- Swing JFileChooser只接受ZIP和Directory
- 这样定义react组件的原因是什么?
- 向3d numpy数组添加行向量
- AWS ECS Service Connect versus Service Discovery
- 根据MongoDB中的条件获取下一个和上一个文档
- 是否有办法使一个正在运行的进程处于D状态或Z状态?
- 使用最新版本的d3-path配置jest
- 为什么我的复制和粘贴代码出现"Object Required"错误?
- 模型元类与模型形式元类有何不同?
- 可以在不更改对象构造函数的情况下向对象构造函数添加新的动态参数吗
- 对于下面的CNN模型,我们需要优化多少个模型参数?
- typescript Redis客户端在类的构造函数?
- 无法从带有Java进程的Docker控制台分离
- 我可以列出一个数字,如果类实例在一个数组?
- 显示一次登录屏幕
- 如何获取defaultColDef中正在处理的单元格的列索引.网格中的cellClass
- 具有多个worker的可迭代pytorch数据集
- 如何在刀片模板内编写PHP代码
- BIM360提交API文档
- React Native API FETCH每个对象的不同名称
- 如何在Linux mongosh命令行上指定数据库以及身份验证
- GitHub Actions CodeQL初始化操作失败
- 不和谐.js "cannot read properties of undefined"尝试将事件处理程序放入单独的文件中时
- Woocommerce如何将钩子中的函数转换为短代码
- Oracle SELECT每个不同的列对每个不同的列
- 将复选框的字符串转换为布尔值
- 不能使用函数查找数组部分的和(javascript)
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium