我有多个VIEW,其中PERSON_VIEW与PHONE_VIEW具有一对多的关系。在下面的查询中,我得到了TOAD,以便为每个人记录正确输出结果为1行。
我在使用Informatica Powercenter时遇到问题。我将查询复制/粘贴到SQ SQL Query部分。
由于查询采用PHONE_NUMBER并检查PHONE_TYPE是否为HOME,BUSINESS或PERSONAL类型,因此会输出3个电话号码列,分别为HOME,BUSINESS和PERSONAL。
我在SQ Ports中创建了3个名为HOME,BUSINESS和PERSONAL的新列,以匹配查询输出列。当我验证查询时,它经常说它必须匹配来自SQ的28个端口。当我只添加1列并映射到Exp Transformation然后映射到Target时,它仍然会出现此错误。我计算了端口,它是29.如果我删除了电话列,它可以工作,计数是28.当我只添加一个电话列时,它会给出错误。
我想我错过了一步。
感谢任何帮助。
PERSON VIEW 1 John M. Doe
电话视图
1 111-111-1111 HOME 1 222-222-2222业务 1 333-333-3333工作
TOAD结果 1 John M. Doe 111-111-1111 222-222-2222 333-333-3333
这是QUERY(这在TOAD中有效)
SELECT PERSON.PERSON_ID,
PERSON.FIRST_NAME,
PERSON.MIDDLE_NAME,
PERSON.LAST_NAME,
PHONE.HOME,
PHONE.BUSINESS,
PHONE.PERSONAL,
PHONE_TYPE
FROM PERSON_VIEW PERSON
LEFT JOIN (SELECT * FROM (SELECT PERSON_ID, PHONE_TYPE,PHONE_NUMBER
FROM PHONE_VIEW)
PIVOT
(
MAX(PHONE_NUMBER)
FOR PHONE_TYPE in ('HOME' AS HOME,'PERSONAL' AS PERSONAL , 'BUSINESS' AS BUSINESS)
)
)PHONE ON PHONE.PERSON_ID = PERSON.PERSON_ID