1
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

私のビューにはテーブルが1つしかありません

ここに画像の説明を入力

ありがとう

4

3 に答える 3

2

このようにしてみてください....

Select Distinct  RESVID ,Stuff((Select ','+VEHTYPE from TabelName A where A.RESVID =B.RESVID 
 For Xml Path('')),1,1,'') as VEHTYPE from TabelName B
于 2013-06-18T03:40:52.027 に答える
1

これを試して:

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

于 2013-06-18T06:17:14.520 に答える