繁体   English   中英

将多行连接成单行

[英]Concatenate multiple row into single row

SELECT     
   RESVID, VEHTYPE
FROM         
   (SELECT     
       dbo.T_VEH_VEHRESERVATION.RESVID,
       TABLEVEHICLE.VEHTYPE, TABLEVEHICLE.VEHREGID
    FROM          
       (SELECT     
            dbo.T_VEH_VEHCATEGORY.VEHBRANDNAME + N' ' + dbo.T_VEH_VEHCLASS.VEHCLASSNAME AS VEHTYPE, 
            dbo.T_VEH_VEHREGISTRATION.VEHREGID
        FROM          
            dbo.T_VEH_VEHCATEGORY 
        WHERE      
            (dbo.T_VEH_VEHREGISTRATION.DELIND = 0) 
       ) AS TABLEVEHICLE 
    INNER JOIN
       dbo.T_VEH_VEHRESERVATION ON TABLEVEHICLE.VEHREGID = dbo.T_VEH_VEHRESERVATION.VEHREGID )
    GROUP BY 
       dbo.T_VEH_VEHRESERVATION.RESVID   
   ) AS TABLERESV

在此输入图像描述

我想将RESVID :33(重复行)连接成1。

这只是一个例子,当然我想要的是这个情况下的每个重复行都将得到解决。

我尝试了XML PATH功能,但根本不起作用,我不知道出了什么问题,如果有任何帮助我的代码,我会很感激,并给我解释。

我的愿望结果:

RESVID   |  VEHTYPE
-------------------
  33     |  Proton Economic, Toyota Mid-size SUV

我的观点只有一张桌子

在此输入图像描述

谢谢

试试这样....

Select Distinct  RESVID ,Stuff((Select ','+VEHTYPE from TabelName A where A.RESVID =B.RESVID 
 For Xml Path('')),1,1,'') as VEHTYPE from TabelName B

尝试使用STUFF()

SELECT RESVID ,
    STUFF((
    SELECT ','+ VEHTYPE    
    FROM TABLERESV b    
    WHERE a.RESVID = b.RESVID 
    FOR XML PATH('')
    )
    ,1,1,'') AS VEHTYPE
FROM TABLERESV  a
GROUP BY a.RESVID 

尝试这个:

SELECT B.resvid, STUFF(
(SELECT ',' + A.vehtype
FROM TABLE_NAME A
WHERE A.resvid=B.resvid
FOR XML PATH('')),1,1,'') AS CSV
FROM TABLE_NAME B
GROUP BY B.resvid

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM