ENAME CNAME
aaaa 礼盒2件套
aaaa 礼盒2件套
aaaa_bb 礼盒2件套bb
aaaa_bb 礼盒2件套bb
aaaa_bb 礼盒2件套bb
aaaa_bb 礼盒2件套bb
aaaa_bb_1 礼盒2件套bb_1
aaaa_bb_2 礼盒2件套bb_2
aaaa_bb_3 礼盒2件套bb_3
aaaa_bb_4 礼盒2件套bb_4
bbbb 礼盒2件套
bbbb 礼盒2件套
bbbb_bb 礼盒2件套cc
bbbb_bb 礼盒2件套cc
bbbb_bb 礼盒2件套cc
bbbb_bb 礼盒2件套cc
bbbb_bb_1 礼盒2件套cc_1
bbbb_bb_2 礼盒2件套cc_2
bbbb_bb_3 礼盒2件套cc_3
bbbb_bb_4 礼盒2件套cc_4
想吧aaaa的产品中文名称都变成aaaa第一行的中文名称
类似BBBB的产品,都变成BBBB的第一行的中文名称.
这个批量更新语句应该怎么写.
------解决思路----------------------
CREATE TABLE #temp (ENAME VARCHAR(50), CNAME VARCHAR(50))
INSERT #temp
SELECT 'aaaa','礼盒2件套' UNION ALL
SELECT 'aaaa','礼盒2件套' UNION ALL
SELECT 'aaaa_bb','礼盒2件套bb' UNION ALL
SELECT 'bbbb','礼盒2件套' UNION ALL
SELECT 'bbbb','礼盒2件套' UNION ALL
SELECT 'bbbb_bb','礼盒2件套cc'
UPDATE a SET CNAME=b.CNAME
FROM #temp a
CROSS APPLY
(
SELECT TOP 1 CNAME FROM #temp
WHERE ENAME LIKE LEFT(a.ENAME,
CASE CHARINDEX('_',a.ENAME)
WHEN 0 THEN LEN(a.ENAME)
ELSE CHARINDEX('_',a.ENAME)-1
end)+'%' ORDER BY a.ENAME
) b
SELECT * FROM #temp