why this error was raised? help me!
Teradata Teradata Discussion Forums Teradata.com Discussion Forum
Visit Teradata.com
Home       Guidelines    Member List
Welcome Guest ( Login | Register )
        


This online forum is for user-to-user discussions of Teradata products, and is not an official customer support channel for Teradata. If you require direct assistance, please contact Teradata support.


why this error was raised? help me! Expand / Collapse
Author
Message
Posted 6/5/2006 3:10:44 AM
Forum Newbie

Forum NewbieForum NewbieForum NewbieForum NewbieForum NewbieForum NewbieForum NewbieForum Newbie

Group: Forum Members
Last Login: 6/9/2006 5:11:00 AM
Posts: 4, Visits: 1
Hi, all:
See the following, please!
update TTEMP.TB_MID_NEW_INNET_SUBSCRIBER
from PVIEW.VW_NET_GSM_NL_200604 a
set Active_Month = 200604
where Phone_No = a.MSISDN and Active_Month is null
and substr(cast(START_DATE as format 'YYYYMM'), 1, 6) = '200604';
*** Failure 7547 Target row updated by multiple source rows.
Statement# 1, Info =0
*** Total elapsed time was 20 minutes and 11 seconds.

The syntax of the sql is correct, so I don't know how to avoid the error!
Post #4303
Posted 6/5/2006 1:13:23 PM
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

Group: Forum Members
Last Login: Yesterday @ 8:47:37 PM
Posts: 283, Visits: 989
Try this:

update TTEMP.TB_MID_NEW_INNET_SUBSCRIBER
from (select distinct MSISDN from PVIEW.VW_NET_GSM_NL_200604) a
set Active_Month = 200604
where Phone_No = a.MSISDN and Active_Month is null
and substr(cast(START_DATE as format 'YYYYMM'), 1, 6) = '200604';
Post #4308
Posted 6/5/2006 9:35:07 PM
Forum Newbie

Forum NewbieForum NewbieForum NewbieForum NewbieForum NewbieForum NewbieForum NewbieForum Newbie

Group: Forum Members
Last Login: 6/9/2006 5:11:00 AM
Posts: 4, Visits: 1
Thanks, Jim Chapman!

It's work, but runs slowly! Maybe due to using distinct.
Post #4313
Posted 6/6/2006 1:21:55 PM
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

Group: Forum Members
Last Login: Yesterday @ 8:47:37 PM
Posts: 283, Visits: 989
A correlated subquery might be faster. Try this:

update TTEMP.TB_MID_NEW_INNET_SUBSCRIBER
set Active_Month = 200604
where Active_Month is null
and substr(cast(START_DATE as format 'YYYYMM'), 1, 6) = '200604'
and EXISTS
(select 1 from PVIEW.VW_NET_GSM_NL_200604 a
where Phone_No = a.MSISDN);
Post #4316
Posted 6/7/2006 11:05:06 AM
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

Group: Forum Members
Last Login: 8/20/2008 5:30:17 AM
Posts: 10, Visits: 5
Just adding to Jim's reply- you can use 'group by' also.
'GROUP BY' is faster than 'Distinct'.

UPDATE TTEMP.TB_MID_NEW_INNET_SUBSCRIBER
FROM (SELECT MSISDN FROM PVIEW.VW_NET_GSM_NL_200604 GROUP BY 1) A
SET ACTIVE_MONTH = 200604
WHERE PHONE_NO = A.MSISDN AND ACTIVE_MONTH IS NULL
AND SUBSTR(CAST(START_DATE AS FORMAT 'YYYYMM'), 1, 6) = '200604';
Post #4331
Posted 6/16/2006 3:27:16 PM
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

Group: Forum Members
Last Login: 5/2/2008 2:28:55 AM
Posts: 15, Visits: 2
According to ANSI semantics, we can not update the same target row by multiple source rows. This error is to prevent that.
Post #4386
« Prev Topic | Next Topic »


Reading This Topic Expand / Collapse
Active Users: 0 ( 0 guests, 0 members, 0 anonymous members )
No members currently viewing this topic.


All times are GMT -5:00, Time now is 4:24pm

Powered By InstantForum.NET v4.1.4 © 2009
Execution: 0.078. 7 queries. Compression Disabled.