0
需要帮助在逻辑数据更新我有3个表:使用存储过程
帐户(使用的字段:ID VARCHAR(20)和名称为varchar(50))
OpttyPartner(字段使用:ID15 VARCHAR(20),ACCOUNTTOID VARCHAR(20)
Final2([机会ID] VARCHAR(20),合伙VARCHAR(400)
我需要更新每个记录的最终合作伙伴字段,以及来自会计科目表的名称。 Final2涉及OpptyPartner含{机会ID]和ID15 帐户与具有ID和ACCOUNTTOID OpptyPartner相关
如果存在多于一个的accounttoid为同一机会ID则名称应附加并用“分隔; “
例如:
Final2
ID Partner
1
OpptyPartner
ID15 ACCOUNTTOID
1 A1
1 A2
Accounts
ID Name
A1 ABC com
A2 EFG com
在合作伙伴的输出应该是 'ABC COM; EFG COM'
如何才能实现这一目标?游标?
UPDATE:
;With partners as
(select * from Accounts inner join OpptyPartner on
Accounts.ID COLLATE Latin1_General_CS_AS=OpptyPartner.[ACCOUNTTOID] COLLATE Latin1_General_CS_AS
inner join Final2 on Final2.[Opportunity ID] = OpptyPartner.ID15)
Update Final2 set Partner = p.Names from
Final2 inner join
(select [Opportunity ID] , LEFT(Names, len(Names)-1) as Names from
(SELECT j.[Opportunity ID] ,
(SELECT cast(p1.NAME as varchar(10)) + ';'
FROM partners p1
WHERE p1.[Opportunity ID] = j.[Opportunity ID]
ORDER BY NAME
FOR XML PATH('')) AS Names
FROM partners j
GROUP BY [Opportunity ID])A
) p on Final2.[Opportunity ID] = p.[Opportunity ID]
'ID'列被指定为多个次'合作伙伴'。我得到这个错误 – Prady 2011-03-12 05:04:29
@Prady:在我的表格设计中看到的名为唯一的“ID”列是在Accounts表上。我修改了我的答案,只选择了几列。 – 2011-03-12 05:09:23
@Radu我已更新原来的问题与我正在使用的查询..我不得不添加排序规则 – Prady 2011-03-12 05:26:34