我有一个数据处理器可以从选择查询中创建一个表。
<_config:table definition="CREATE TABLE TEMP_TABLE (PRODUCT_ID NUMBER NOT NULL, STORE NUMBER NOT NULL, USD NUMBER(20, 5),
CAD NUMBER(20, 5), Description varchar(5), ITEM_ID VARCHAR(256), PRIMARY KEY (ITEM_ID))" name="TEMP_TABLE"/>
,选择查询
<_config:query sql="SELECT DISTINCT ce.PRODUCT_ID, ce.STORE, op.USD ,op.CAD, o.Description, ce.ITEM_ID
FROM PRICE op, PRODUCT ce, STORE ex, OFFER o, SALE t
where op.ITEM_ID = ce.ITEM_ID and ce.STORE = ex.STORE
and ce.PRODUCT_ID = o.PRODUCT_ID and o.SALE_ID IN (2345,1234,3456) and t.MEMBER = ce.MEMBER"/>
当我运行该处理器时,我得到一个唯一的约束错误,尽管我在select语句中有一个独特的。
我尝试使用CREATE TABLE AS(SELECT .....)创建它。
是否可能出现该错误?我正在执行批量执行,因此无法找到单个记录。
答案 0 :(得分:3)
select distinct
适用于整行,而不是单独适用于每一列。因此,两行可以具有相同的item_id
值,但在其他列中可以不同。
最终修复可能是在查询中使用group by item_id
,而不是select distinct
。这将需要对逻辑进行其他更改。另一种可能性是在子查询中使用row_number()
并选择第一行。