sas sql 更新 returns 无
sas sql update returns nothing
我有 2 个 tables - parent 和 child,每个有 2 列 - id 和地址,地址看起来像这样 -
\partNumber\a$\sometext....\ - 对于 child
和 \partNumber\a$\ - 对于 parent.
我需要用 2 列从中创建一个 table - 对于每个 child id,我需要获取它的 parent 文件夹。
我试图通过使用 sql
来做到这一点
update work.Test
set parent_id = ( select pn.DirId
from work.Parent pn
join work.Child cn on cn.dirPath like pn.dirPath & '%');
刚刚尝试了另一个类似的选项
update work.Test
set parent_id = ( select pn.DirId
from work.Parent pn
join work.Child cn on
cn.dirPath = substr(pn.dirPath, 1, index( '%', pn.dirPath) +1));
但还是一样的结果
甚至它给了我 0 个错误并在日志中显示它确实更新了所有
记录,作为最终结果,我在 table.
上一无所获
我不确定我是否可以帮助不知道 table 测试来自哪里。
总之,cn.dirPath like pn.dirPath & '%'
很可能没有如愿以偿。尝试 cn.dirPath like trim(pn.dirPath) || '%'
编辑:我添加了 trim(),pn.dirPath 可能有尾随空格。
您可以只使用 EQT
比较来查找具有相似前缀的地址。
data child ;
input child_id address . ;
cards;
1 \partNumber\a$\sometext....\
2 no_parent
;
data parent ;
input parent_id address .;
cards;
501 \partNumber\a$\
;
proc sql ;
create table want as
select a.child_id,b.parent_id,a.address,b.address as parent_address
from child a
left join parent b
on a.address eqt b.address
;
quit;
结果:
parent_
Obs child_id id address parent_address
1 1 501 \partNumber\a$\sometext....\ \partNumber\a$\
2 2 . no_parent
我有 2 个 tables - parent 和 child,每个有 2 列 - id 和地址,地址看起来像这样 -
\partNumber\a$\sometext....\ - 对于 child
和 \partNumber\a$\ - 对于 parent.
我需要用 2 列从中创建一个 table - 对于每个 child id,我需要获取它的 parent 文件夹。 我试图通过使用 sql
来做到这一点update work.Test
set parent_id = ( select pn.DirId
from work.Parent pn
join work.Child cn on cn.dirPath like pn.dirPath & '%');
刚刚尝试了另一个类似的选项
update work.Test
set parent_id = ( select pn.DirId
from work.Parent pn
join work.Child cn on
cn.dirPath = substr(pn.dirPath, 1, index( '%', pn.dirPath) +1));
但还是一样的结果
甚至它给了我 0 个错误并在日志中显示它确实更新了所有 记录,作为最终结果,我在 table.
上一无所获我不确定我是否可以帮助不知道 table 测试来自哪里。
总之,cn.dirPath like pn.dirPath & '%'
很可能没有如愿以偿。尝试 cn.dirPath like trim(pn.dirPath) || '%'
编辑:我添加了 trim(),pn.dirPath 可能有尾随空格。
您可以只使用 EQT
比较来查找具有相似前缀的地址。
data child ;
input child_id address . ;
cards;
1 \partNumber\a$\sometext....\
2 no_parent
;
data parent ;
input parent_id address .;
cards;
501 \partNumber\a$\
;
proc sql ;
create table want as
select a.child_id,b.parent_id,a.address,b.address as parent_address
from child a
left join parent b
on a.address eqt b.address
;
quit;
结果:
parent_
Obs child_id id address parent_address
1 1 501 \partNumber\a$\sometext....\ \partNumber\a$\
2 2 . no_parent