Sql查询将diff ProductCode的两个列值与相同的Productname组合在一起

时间:2014-08-01 09:23:05

标签: sql-server-2008

我有下表

 ID   PCode   Pname
 ----------------------------------    
  1     A1    Book
  2     A2    Oxford Dictionary
  3     A3    Book

预期产出:

  ID  PCode  Pname
  ---------------------------------------
  1     A1   Book_A1
  2     A2   Oxford Dictionary
  3     A3   Book_A3

如果不同Pname的{​​{1}}相同,则结果必须为Pcode Pname_PcodeBook_A1

请提供对我有帮助的解决方案。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用条件再次加入同一个表,以仅获取记录having重复项。然后在case

中检查此条件
select t1.id, t1.pcode, case when t2.pname is not null 
                             then t2.pname + '_' + t1.pcode
                             else t1.pname
                        end as pname
from your_table t1
left join
(
  select pname 
  from your_table
  group by pname
  having count(*) > 1
) t2 on t1.pname = t2.pname