使用以下代码。不断收到以下错误Oracle - 在一个字段中一起添加行
Select distinct
ship_L.ship_ID,
ship_L.Item_Num,
C.sku,
C.ob_oid,
c.Container
From (
Select distinct
ob_oid,
sku,
substr((ltrim(sys_Connect_By_Path(trim(to_Cont),'/'))),2,(length(ltrim(sys_Connect_By_Path(trim(to_Cont),'/'))))) as Container
From (
Select distinct
Ob_oid,
sku,
To_Cont,
row_number() Over (Partition by sku order by to_Cont) -1 as seq
From (
Select distinct
ob_oid,
sku,
To_Cont
from elite_76_w1.ITH_f
--Where ob_oid = '237472'
-- and sku = '64154'
)
)
Where connect_By_Isleaf = 1
Connect by seq = Prior seq +1 and sku = Prior sku
Start with seq = 1
) C
Left Join elite_76_D.ship_L
on ship_L.ship_id = C.ob_oid
and ship_L.item_num = C.sku
WHere C.ob_oid = '237472'
and C.sku = '64154'
收到此错误: ORA-01489:字符串连接的结果是太长01489. 00000 - “字符串连接的结果是太长” *原因:字符串concatenatin结果大于最大尺寸。 *操作:确保结果比最大尺寸更小。供应商代码1489Error在第3行
开始: SKU位置 64154 A153945
64154 A153943
64154 A153947
64154 A153946
64154 A153944
极品: 64154 A153944/A153945/A153946/A153947
谢谢大家的帮助, David
由于这是一个猜测,我会评论,不发表。在最内层查询中将“to_cont”转换为较大的VARCHAR()。例如,它是一个VARCHAR(32),将它转换为VARCHAR(4000)。 *** [所有假设您的输出字段被限制为与您的输入相同的长度,这可能会因此在您的输出中允许更多字符。] ***如果4000不够用,您可以查看在CLOB上,但是其他代码不适用于该数据类型。 – MatBailie 2012-03-02 18:21:11
TSQL适用于MSSQL。这个问题是Oracle。 – Paparazzi 2012-03-02 20:21:04
没有运气。即使我将“to_Cont”投放到4000个使用该字段的地方,我仍然遇到同样的错误。 – David 2012-03-05 14:24:26