Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql server中如何用逗号分隔列值_Sql_Sql Server - Fatal编程技术网

在sql server中如何用逗号分隔列值

在sql server中如何用逗号分隔列值,sql,sql-server,Sql,Sql Server,我的问题是: select gp.GroupName+ '' As GroupName, us.UnitsName+'' As Unitname, sp.Sensorname+',' As sensorName from Grouping as gp inner join Units as us on gp.UnitsID = us.UnitsID inner join Sensors as sp on gp.SensorID = sp.SensorID 输出是 GroupName

我的问题是:

select 
gp.GroupName+ '' As GroupName,  
us.UnitsName+'' As Unitname,
sp.Sensorname+',' As sensorName
from Grouping as gp
inner join Units as us
on gp.UnitsID = us.UnitsID
inner join Sensors as sp
on gp.SensorID = sp.SensorID
输出是

GroupName   Unitname    sensorName

G1         Electricity  S1,

G1        Electricity   S3,

G2          Gas       test,
但是输出应该是

G1         Electricity  S1,S3

G2          Gas       test
如何得到它?

非常感谢:)它完全符合我的需要。非常感谢:)它完全符合我的需要
WITH CTE
AS
(
    select
      gp.GroupName  As GroupName,
      us.UnitsName  As Unitname,
      sp.Sensorname As sensorName
    from Grouping as gp
    inner join Units as us  on gp.UnitsID = us.UnitsID
    inner join Sensors as sp on gp.SensorID = sp.SensorID
)
SELECT 
  c1.Groupname,
  c1.Unitname,
  STUFF((
    SELECT ', ' + c2.sensorName
    FROM CTE c2
    WHERE c2.GroupName = c1.GroupName
      AND c2.Unitname = c1.Unitname
    FOR XML PATH (''))
  ,1,2,'') AS Sensors
FROM CTE  c1
GROUP BY c1.GroupName,
         c1.Unitname;