首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL对多个列分别进行合并的操作,100分送上多谢

2013-12-13 
SQL对多个列分别进行合并的操作,100分送上谢谢操作了一个查询,大概联合了20张表左右.现在需要对一些数据做

SQL对多个列分别进行合并的操作,100分送上谢谢
操作了一个查询,大概联合了20张表左右.现在需要对一些数据做一些处理,因为部分不相同的列,需要合并在一起,并追加分隔号

SQL对多个列分别进行合并的操作,100分送上多谢
这是查询出来的数据段

其中,标注的Order_No,Insp_type,Style_Name,Type_Desc都可能存在不相同的数据,所以,需要把这些列都合并起来,加上分割号,大概如下图效果
SQL对多个列分别进行合并的操作,100分送上多谢
这是合并之后的数据

合并的代码如下


SELECT B.Agreement_Transaction_Id,B.Agreement_Transaction_No,B.Customer_Name,LEFT(AgreementList,LEN(AgreementList)-1) as Order_No FROM (
 SELECT Agreement_Transaction_Id,Agreement_Transaction_No,Customer_Name,
      (SELECT Order_No+';' FROM V_Agreement_Transaction_Invoice WHERE Agreement_Transaction_Id=A.Agreement_Transaction_Id FOR XML PATH('')) AS AgreementList
FROM V_Agreement_Transaction_Invoice A 
GROUP BY Agreement_Transaction_Id,Agreement_Transaction_No,Customer_Name)B 


在这一块有一点疑问,我现在要对第二字段进行合并的时候要如何操作?
[解决办法]
1. 字符串合并的话,只要将列都转换成字符类型,然后把要合并的列直接用 +';' 连接就行。
2. 不知道你为什么要合并,如果还有外部程序,建议在外部程序中合并,因为反操作麻烦很多。
[解决办法]
合并例子:
--2005
create table ym
(col1 int, col2 int, col3 varchar(3))

insert into ym
select 1, 1, 'A' union all
select 1, 1, 'B' union all
select 1, 2, 'C' union all
select 1, 3, 'D' union all
select 1, 3, 'E'


select a.col1,a.col2,
stuff((select ','+col3 from ym b 
       where b.col1=a.col1 and b.col2=a.col2 
       for xml path('')),1,1,'') 'col3'
from ym a
group by  a.col1,a.col2
[解决办法]
用版主的简洁明了许多
[解决办法]
你上面写的就是合并,挺好的,其他的字段也是一样合并的,都是通过xml来合并
[解决办法]
这样就行:

SELECT Agreement_Transaction_Id,
       Agreement_Transaction_No,
       Customer_Name,
       stuff((SELECT distinct ';'+Order_No FROM V_Agreement_Transaction_Invoice 
               WHERE Agreement_Transaction_Id=A.Agreement_Transaction_Id 
               FOR XML PATH('')
              ),1,1,'') AS Order_No,
       
       stuff((SELECT distinct ';'+Inspection_type FROM V_Agreement_Transaction_Invoice 
               WHERE Agreement_Transaction_Id=A.Agreement_Transaction_Id 
               FOR XML PATH('')
              ),1,1,'') AS Inspection_type,
       
       stuff((SELECT distinct ';'+Style_name FROM V_Agreement_Transaction_Invoice 
               WHERE Agreement_Transaction_Id=A.Agreement_Transaction_Id 
               FOR XML PATH('')
              ),1,1,'') AS Style_name,     
              
        stuff((SELECT distinct ';'+Type_description FROM V_Agreement_Transaction_Invoice 
               WHERE Agreement_Transaction_Id=A.Agreement_Transaction_Id 
               FOR XML PATH('')
              ),1,1,'') AS Type_description      


            
FROM V_Agreement_Transaction_Invoice A 
GROUP BY Agreement_Transaction_Id,Agreement_Transaction_No,Customer_Name

热点排行